HTTP Cache - Wieso werden Preise und Lieferzeiten gecached?

Hallo Liebe Community, ich administriere ein Shopware System und habe vor kurzem den HTTP Cache eingerichtet. Dieser funktioniert bis auf einige Ausnahmen tadellos. Es ist ja möglich im Backend No-Cache-Controller hinzuzufügen. Hier habe ich allerdings ein paar Probleme. Ich möchte das bei den Detail-Seiten der Preis nicht im Cache steht. Bei meinem Template funktioniert das leider nicht wenn ich dort „frontend/detail data“ bzw „frontend/detail price“ eintrage. Ich frage mich sowieso - wie funktioniert das System? Alle Daten die ich nicht im Cache haben möchte liegen in einer „data.tpl“ unter dem Ordner frontend/detail/data.tpl - wie kann ich im Template das erreichen, dass er diese Informationen nicht cached? liebe Grüße

Hi, suche ebenfalls nach einer Lösung um den Lieferzeit Text nicht zu cachesch, sondern wie in dem Warenkorb direkt aus der Datenbank abzufragen.

Hi, im Cache-Backend-Modul könnt ihr grundsätzlich Folgendes steuern: * Welche Controller werden wie lange gecacht. Jeder Controller, der in diesem ersten Grid verzeichnet ist, wird für die angegebene Zeit gecacht. Wenn ihr bspw. den Detail-Controller komplett live haben wollt, könnt ihr den Eintrag dort entfernen. Alternativ könnt ihr dort die Cache-Zeit des Detail-Controllers reduzieren. * Welche Controller kommen *live* zurück, wenn ein bestimmter Cache-Tag gesetzt ist. Das zweite Szenario ist sicher etwas komplexer und führt häufig zu Missverständnissen: Die Tatsache, dass dort „frontend/detail price“ eingetragen ist, bedeutet nicht, dass der Preis in diesem Controller immer live kommt. Es bedeutet, dass dieser Controller live kommt, wenn das „price“ Tag gesetzt ist. Das „price“-Tag ist einfach nur eine „Markierung“, die wir setzen, wenn der Nutzer nicht in der Standard-Kundengruppe ist (bspw. ein Händler loggt sich ein und ist dann nicht mehr EK, sondern H). Dann sind die Preise ja in alle Regel abweichend - darum „price“ als Info: Achtung, Preise vermutlich falsch, wir haben einen Sonderfall. Ist so ein Tag für einen Nutzer gesetzt, passieren zwei Dinge: 1) Responses von Controllern, die auf dieses Tag reagieren, werden nicht mehr in den Cache geschrieben - wir wollen ja keine Händler-Preise cachen 2) Benutzer, die diesen Cache-Tag haben, bekommen Antworten von Controllern, die auf diesen Tag reagieren, live (Händler sollen ja keine EK-Preise sehen). Was habt ihr nun für Möglichkeiten? 1) Detail-Controller immer live kommen lassen (siehe oben) - nicht unbedingt empfehlenswert 2) Bestimmte Informationen (Lieferzeiten…) über unser Smarty-Action-Plugin einbinden. Da wir ESI-Tags unterstützen könnt ihr damit erreichen, dass die Detailseite noch gecacht wird - bestimmte Bereiche aber trotzdem live kommen. Das kann in Einzelfällen sinnvoll sein - je mehr ihr das macht, desto mehr verliert ihr auch den Performance-Vorteil des Caches - ist also mit Vorsicht zu genießen und erfordert etwas Programmierkenntnis. 3) Euch auf die Cache-Invalidierung verlassen: Bei Nutzung des SW-Backends sowie unserer API werden bei Aktualisierung eines Artikels automatisch alle gecachten Seiten gelöscht, die diesen Artikel beinhalten - also auch die Artikeldetailseite. Das könnt ihr ebenfalls im Performance-Backend-Modul aktivieren, die Option nennt sich „Cache-Invalidierung“ oder „Proxy-BAN aktivieren“. lG Daniel

3 „Gefällt mir“

Vielen Dank. Und welche der drei Lösungen empfählst du?

Hi, normalerweise ist die Cache-Invalidierung völlig ausreichend, um bspw. Preise und Lieferzeiten aktuell auf der Detailseite anzuzeigen. Probleme bereitet die nur, wenn du Schnittstellen nutzt, die das nicht unterstützen - also ggf. Importe von Drittanbietern oder Plain-SQL-Anpassungen. Die anderen Lösungen sind eher nötig, wenn man noch spezielle Anforderungen hat oder bspw. Wechselkurse live von einem anderen Server hohlen muss. lG Daniel

Ich aktualisiere eigentlich die Lieferzeiten über die Lokale API (Variante-Update). Aber hierbei schein die Cache-Invalidierung nicht zu greifen.

Hast du vielleicht ein Beispiel wie und wo man die Cache-Tags setzt?

Hat denn keiner schonmal sowas gemacht?