Dringend: Wie kann man dynamische Daten im twig Template vom Cache ausnehmen lassen?

Wir möchte dynamische Daten in der Produktdetailansicht ausgeben lassen, die aus einer eigenen DB-Tabelle kommen. Leider werden diese dynamischen Daten beim ersten Aufruf der Produktdetailansicht für ein bestimmtes Produkt im Production-Modus gecacht und diese ändern sich dann nie mehr.

Wie kann Teile im twig-Template vom Cache ausnehmen lassen?

Danke für jede Hilfe zu dem Thema.

Das einfachste wäre deine Inhalte per Javescript zu laden und rein zu rendern. Das ist der übliche Weg für dynamische Inhalte.

Danke. Ich analysiere gerade, wie Shopware das so macht, bspw. beim Warenkorb-Icon rechts oben, wo sich ja der Betrag ändern muss oder auch unter Mein Konto bei den Adressen. Aber lt. den twig-Templates hätte ich da kein Javascript vermutet. Wird da nicht der Betrag auch schon serverseitig generiert.

Wobei dann wieder wundern würde, das es nicht gecacht wird. Die Umstellung auf Javascript und Ajax ist an der Stelle etwas aufwendig. Ich dachte, man kann im twig vielleicht bestimmte Teile einfach ausnehmen oder im Controller. Gäbe es neben Javascript noch Alternativen?

 

Ok. An der Stelle ist es mit JavaScript gelöst. Serverseitig steht 0,00 neben dem Cart-Symbol und dann wird per JavaScript der richtige Betrag eingesetzt. Aber bei Mein Konto -> Adressen ist es nicht so, da stehen die Daten gleich in der HTML-Ausgabe und werden serverseitig ausgegeben. Da wäre es interessant zu wissen, wie das dort funktioniert.

Im Account und Warenkorb Bereich ist der HTTP cache nicht aktiv.

Viele Grüße

Ok. Wie kann man den HTTP Cache abschalten? Wäre jetzt für die Produktdetailansicht natürlich nicht empfehlenswert vermutlich, aber ev. eine Alternative.

Kann man nicht bestimmte Teile einer Seite aus dem Cache ausnehmen? Ich hätte hier nur das gefunden:

 

Ich finde es eh nicht sauber wie Shopware es gelöst hat die Inhalte dynamisch nachzuladen.

  1. Nachgeladene Inhalte mit z.B. einem Popup Link funktionieren einfach nicht.

  2. Man könnte für die Snippets ein globales Data-Attribut setzen, welches kein zusätzliches JS erfordert:

 

1 Like

@opalion schrieb:

Ok. Wie kann man den HTTP Cache abschalten? Wäre jetzt für die Produktdetailansicht natürlich nicht empfehlenswert vermutlich, aber ev. eine Alternative.

Kann man nicht bestimmte Teile einer Seite aus dem Cache ausnehmen? Ich hätte hier nur das gefunden:

https://symfony.com/doc/current/http_cache/esi.html#http-cache-fragments

 

In Twig lassen sich nicht Teile einzeln vom Cache ausschließen. Es gibt aber wohl eine Extension, kann man ja mal testen ob die kompatibel zu Shopware 6 ist.

https://github.com/ttempleton/craft-nocache

 

1 Like