1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | php use ShopwareCoreFrameworkAdapterCacheCacheInvalidator; use ShopwareCoreContentProductSalesChannelListingCachedProductListingRoute; class ProductSubscriber implements EventSubscriberInterface { private $cacheInvalidator; public function __construct( CacheInvalidator $cacheInvalidator ) { $this->cacheInvalidator = $cacheInvalidator; } // Other event subscriber methods... ** Remove cache for specified category IDs. * @param array $categoryIds An array of category IDs to invalidate cache for. / public function removeCategoryCache($categoryIds) { // Build cache keys for each category ID $cacheKeys = array_map([CachedProductListingRoute::class, 'buildName'], $categoryIds); // Invalidate cache for each category $this->cacheInvalidator->invalidate($cacheKeys); } } |
- Wir nutzen die CacheInvalidator Service von Shopware zur Ungültigmachung von Cache-Einträgen.
- Der RemoveCategoryCache Die Methode akzeptiert ein Array von Kategorie-IDs, für die wir den Cache ungültig machen möchten.
- Wir nutzen CachedProductListingRoute::buildName Methode zum Erstellen von Cache-Schlüsseln für jede Kategorie-ID.
- Schließlich machen wir den Cache für jeden erstellten Cache-Schlüssel ungültig, indem wir verwenden ungültig machen Methode der CacheInvalidator Service.
Abschluss
Durch die Implementierung dieser Lösung stellen Sie sicher, dass der Cache für Kategorieauflistungen ordnungsgemäß ungültig gemacht wird, wenn Sie zusätzliche Filter zu Produktauflistungen hinzufügen, und lösen so das Problem ungültiger