# Cache per CLI invalidieren

**URL:** <https://forum.shopware.com/t/cache-per-cli-invalidieren/50874>\
**Category:** Programmierung\
**Created:** [2. Februar 2018 um 13:22 UTC](https://forum.shopware.com/t/cache-per-cli-invalidieren/50874 "2018-02-02T13:22:34Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![mson](https://avatars.discourse-cdn.com/v4/letter/m/5daacb/32.png) [@mson](https://forum.shopware.com/u/mson)\
**Post date:** [2. Februar 2018 um 13:22 UTC](https://forum.shopware.com/t/cache-per-cli-invalidieren/50874/1 "2018-02-02T13:22:34Z")

</div>

Hey,

für unseren Kunden nutzen wir einen eigens programmierten Preis-Importer. Da die Preise direkt per “plain” SQL aktualisiert werden und nicht über Doctrine, würde ich den Cache gerne über&nbsp;

```
Shopware()->Events()->notify(
    'Shopware_Plugins_HttpCache_InvalidateCacheId',
    array(
        'cacheId' => 'a'.$this->_sArticleId,
    )
);

```

invalidieren.&nbsp;

Wir lassen den Preisimporter per Cronjob laufen und scheinbar funktioniert das Cache invalidieren nicht über CLI 😕 kann das sein?

Ich lande im HttpCache Plugin in der Methode&nbsp;invalidateWithBANRequest() wobei als url die Base-URL vom Shop genommen wird und die cacheId dem Artikel entspricht, der einen neuen Preis erhalten hat (z.B. a14023).

Darauf wird ja ein BAN-Request losgeschickt, der Status-Code des Response ist “200”, also alles in Butter.

Die Artikel-Detailseite kommt jedoch dennoch aus dem Cache. Wenn ich den Artikelpreis im Backend ändere, funktioniert das Invalidieren einwandfrei und die Detailseite wird neu gecached.

Hat hier jemand eine Idee, woran das liegt? Ist es über CLI irgendwie möglich, gezielt einzelne gecachte Seiten zu invalidieren?

Viele Grüße  
Malte 🙂

---

<div class="post-metadata">

**Author:** ![mson](https://avatars.discourse-cdn.com/v4/letter/m/5daacb/32.png) [@mson](https://forum.shopware.com/u/mson)\
**Post date:** [6. Februar 2018 um 10:32 UTC](https://forum.shopware.com/t/cache-per-cli-invalidieren/50874/2 "2018-02-06T10:32:54Z")

</div>

Anyone?

---

<div class="post-metadata">

**Author:** ![mson](https://avatars.discourse-cdn.com/v4/letter/m/5daacb/32.png) [@mson](https://forum.shopware.com/u/mson)\
**Post date:** [6. Februar 2018 um 13:21 UTC](https://forum.shopware.com/t/cache-per-cli-invalidieren/50874/3 "2018-02-06T13:21:46Z")

</div>

Habe es jetzt so gelöst, dass ich einen neuen Frontend-Controller angelegt habe, in dem&nbsp;Shopware\_Plugins\_HttpCache\_InvalidateCacheId Event gefeuert wird. Der Controller wird dann aus dem Cronjob heraus über CLI aufgerufen.

---

<div class="post-metadata">

**Author:** ![derwunner](https://avatars.discourse-cdn.com/v4/letter/d/e5b9ba/32.png) [@derwunner](https://forum.shopware.com/u/derwunner)\
**Post date:** [9. Februar 2018 um 12:45 UTC](https://forum.shopware.com/t/cache-per-cli-invalidieren/50874/4 "2018-02-09T12:45:53Z")

</div>

Hallo,

&nbsp;

sprich doch einfach den console Task zum Cache leeren direkt an, oder nicht?

&nbsp;

&nbsp;

MFG

&nbsp;

derwunner

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [9. Februar 2018 um 13:34 UTC](https://forum.shopware.com/t/cache-per-cli-invalidieren/50874/5 "2018-02-09T13:34:43Z")

</div>

Ich bin da jetzt nicht so tief im Thema drin - du könntest aber auch einfach wie es bspw. über das Backend gemacht wird, einen BAN-Request per Konsole abschicken:

```
curl --header "x-shopware-invalidates: a120" -XBAN http://meinedomain.de

```

Das habe ich mal eben schnell getestet, dass funktioniert so auch.

---

<div class="post-metadata">

**Author:** ![mson](https://avatars.discourse-cdn.com/v4/letter/m/5daacb/32.png) [@mson](https://forum.shopware.com/u/mson)\
**Post date:** [12. Februar 2018 um 14:14 UTC](https://forum.shopware.com/t/cache-per-cli-invalidieren/50874/6 "2018-02-12T14:14:11Z")

</div>

> [@derwunner schrieb:](https://forum.shopware.com/profile/25468/derwunner "derwunner")
> 
> Hallo,
> 
> &nbsp;
> 
> sprich doch einfach den console Task zum Cache leeren direkt an, oder nicht?
> 
> &nbsp;
> 
> &nbsp;
> 
> MFG
> 
> &nbsp;
> 
> derwunner

Danke für den Vorschlag, aber es ging darum, gezielt einzelne Detailseiten aus dem Cache zu nehmen, nicht den gesamten Cache zu leeren.

> [@Moritz Naczenski schrieb:](https://forum.shopware.com/profile/14574/Moritz%20Naczenski "Moritz%20Naczenski")
> 
> Ich bin da jetzt nicht so tief im Thema drin - du könntest aber auch einfach wie es bspw. über das Backend gemacht wird, einen BAN-Request per Konsole abschicken:
> 
> curl --header „x-shopware-invalidates: a120“ -XBAN [http://meinedomain.de](http://meinedomain.de)
> 
> Das habe ich mal eben schnell getestet, dass funktioniert so auch.

Ah okay, danke für den Hinweis, das sieht auch vielversprechend aus. Werde das bestehende Skript jetzt nicht mehr anpassen, aber für die Zukunft gut zu wissen.

---

<div class="post-metadata">

**Author:** ![DanielNogel](https://avatars.discourse-cdn.com/v4/letter/d/96bed5/32.png) [@DanielNogel](https://forum.shopware.com/u/DanielNogel)\
**Post date:** [12. Februar 2018 um 14:43 UTC](https://forum.shopware.com/t/cache-per-cli-invalidieren/50874/7 "2018-02-12T14:43:02Z")

</div>

Hi,

beim Invalidieren über die Konsole musst du bedenken, dass Shopware nicht Purge-Header von beliebigen Hosts akzeptiert - sonst könnte ja jeder einfach den Cache von deinem Shop leeren. Die erlaubten IPs kannst du in den „httpcache“ Optionen in deiner config.php mit dem Schlüssel „purge\_allowed\_ips“ eingeben - im Normalfall sind da nur diese Werte gesetzt:&nbsp;

```
 array('127.0.0.1', '::1')

```

Keine Ahnung, ob es in deinem Fall daran liegt - aber das sollte man auf jeden Fall im Hinterkopf behalten, wenn man von fremden Rechnern aus den Cache leeren möchte.

Besten Gruß

Daniel

&nbsp;

---

<div class="post-metadata">

**Author:** ![wbob](https://avatars.discourse-cdn.com/v4/letter/w/f17d59/32.png) [@wbob](https://forum.shopware.com/u/wbob)\
**Post date:** [11. Februar 2019 um 11:15 UTC](https://forum.shopware.com/t/cache-per-cli-invalidieren/50874/8 "2019-02-11T11:15:14Z")

</div>

War die Webserverumgebung damals nginx oder Apache/varnish? bei nginx gibt es eine Unzulänglichkeit hinsichtlich der Method, wofür ich einen [Lösungsvorschlag](https://github.com/bcremer/shopware-with-nginx/pull/48) gemacht habe. Sollte es sich tatsächlich um nginx handeln, liest sich die Beschreibung so, als würde in der Config auf die BAN Method ein „return 200;“ stehen - dass der Return Status richtig ist, aber dann nichts passiert.

---

<div class="post-metadata">

**Author:** ![Patriano](https://avatars.discourse-cdn.com/v4/letter/p/8dc957/32.png) [@Patriano](https://forum.shopware.com/u/Patriano)\
**Post date:** [21. April 2020 um 07:12 UTC](https://forum.shopware.com/t/cache-per-cli-invalidieren/50874/9 "2020-04-21T07:12:09Z")

</div>

> [@Moritz Naczenski schrieb:](https://forum.shopware.com/profile/14574/Moritz%20Naczenski "Moritz%20Naczenski")
> 
> Ich bin da jetzt nicht so tief im Thema drin - du könntest aber auch einfach wie es bspw. über das Backend gemacht wird, einen BAN-Request per Konsole abschicken:
> 
> curl --header „x-shopware-invalidates: a120“ -XBAN [http://meinedomain.de](http://meinedomain.de)
> 
> Das habe ich mal eben schnell getestet, dass funktioniert so auch.

&nbsp;Hallo, ich habe das nun auch so gemacht und es funktioniert, jedoch dauert es schon eine Weile bei größeren Artikelmengen, ca. 1000 / min, kann man das auch irgendwie parallelisieren? Also anstatt

```
curl --header "x-shopware-invalidates: a120" -XBAN http://meinedomain.de
curl --header "x-shopware-invalidates: a121" -XBAN http://meinedomain.de
curl --header "x-shopware-invalidates: a123" -XBAN http://meinedomain.de

```

irgendwie so in der Art?

```
curl --header "x-shopware-invalidates: a120, a121, a123" -XBAN http://meinedomain.de

```

oder bringt das so und so keinen Geschwindigkeitsvorteil?

best regards
