Hallo liebe Community, ist es möglich alle (relevanten) Caches eines Artikels per API zu löschen? Ich habe verschiedene Funktionen gefunden, an einigen Stellen kann man aber scheinbar nur kahlschlagartig alle Caches leeren. Es geht darum bei Artikeln, die über einen externen Datenbank-Import angelegt/aktualisiert werden, die jeweiligen Caches per PHP zu löschen. Folgendes habe ich bisher versucht: Artikel-Cache flushen $article = $Shopware-\>Models()-\>find('Shopware\Models\Article\Article',(int)$Artikel-\>products\_id); $shopware-\>Models()-\>flush();
Danach gibt es aber oft noch veraltete Anzeige im Frontend, weshalb ich Folgendes mache (was aber leider für alle und nicht nur für den jeweiligen Artikel löscht): $cache = \Shopware\Components\Api\Manager::getResource('cache'); $cache-\>delete('all');
Es bräuchte also sowas wie $cache->delete(‘all’, $artcleId)… geht das irgendwie?
Du könntest zb so den cache eines Artikels löschen: $proxyUrl = 'http://www.shop.de/'; $cacheId = 'a' . $articleId; $client = new Zend\_Http\_Client($proxyUrl, array( 'useragent' =\> 'Shopware/' . Shopware()-\>Config()-\>get('version'), 'timeout' =\> 5, )); $client-\>setHeaders('x-shopware-invalidates', $cacheId) -\>request('BAN');
Alternativ wird der cache aber automatisch invalidiert, wenn du in den HttpCache Einstellungen den Proxy-Prune aktivierst. Du musst nur darauf achten, dass du zur Änderung der Artikel entweder die API oder die doctrine models nutzt und keine direkten sql queries verwendest. Viele Grüße