Suggest Search Cache deaktivieren

Hallo,

ich habe für die inline-Suchergebnisse (SearchSuggest) einen Filter eingebaut. Da in Shopware 6 aber das Suchergebniss für SearchSuggest über einen Decorator gecached wird, hat der Filter keine Auswirkungen.

Jetzt habe ich die CachedProductSuggestRoute wieder mit meinem eigenen Decorator überschrieben

        <service id="MySearch\Core\Content\Product\SalesChannel\Suggest\SmartSearchCachedProductSuggestRoute" decorates="Shopware\Core\Content\Product\SalesChannel\Suggest\CachedProductSuggestRoute" decoration-priority="-1000" public="true">
            <argument type="service" id="Shopware\Core\Content\Product\SearchKeyword\ProductSearchBuilderInterface"/>
            <argument type="service" id="event_dispatcher"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\Listing\ProductListingLoader"/>
        </service>

und einfach die load Funktion aus der originalen ProductSearchRoute kopiert

Das funktioniert zwar, ist aber nicht gerade schön, weil repetitiv und nicht upgrade-freundlich. Aber mir ist auch nichts anderes eingefallen.

Kann man den Cache für die ProductSearchRoute irgendwie anders deaktivieren?

Okay, war wieder viel zu kompliziert gedacht.

Ich habe jetzt einen Subscriber auf das Event ProductSuggestRouteCacheKeyEvent und dort erweitere ich einfach den Cache-Key um den Filter-Wert (in meinem Fall category)

public function onProductSuggestRouteCacheKeyEvent(ProductSuggestRouteCacheKeyEvent $event)
{
    $request = $event->getRequest();
    if($request->get('category')){
        $event->addPart($request->get('category'));
    }
}

Aber interessant, wie die Lösung oft von alleine kommen, nachdem man irgendwo um Rat gefragt hat :sweat_smile: