Cache cookie; cache controller tags Wie den Frontendcache abschalten bzw. dem Request etwas hinzufügen das einen eigenen Generiert?

Hi,

vielleicht hat ja wer eine Idee, ich verstehe das Konzept mit den cache cookies / nicht gecachten controller tags nicht wirklich. Smtlioche Shopwareseiten zum Thema kenne ich helfen mir aber nicht endgültig weiter. Wenn ich einer Usersession mitteilen möchte das sie gewisse bereiche nicht gecached werden sollen muss ich dieser doch einen Wert geben. Wie muss dieser aussehen? Kommt er in die Session oder muss ich einen cookie dafür anlegen? So wie ich es verstehe tickt das so das wenn der User einen der Tags zB also price in seiner Session/seinem cookie oder wo und in welcher form auch immer zu stehen hat werden die Controller welche ich im Backend eben mit dem Tag eingetragen habe nicht gecacht. Wie genau muss ich diesen Wert in die User Session/ den cookie schreiben?

Oder besteht vielleicht die Möglichkeit das Verhalten eines Kundengruppenwechsels zu simulieren? Ich habe mal versucht einfach fiktive Kundengruppen in die Session zu schrieben was zu einem Fehler führt. Mir geht es darum das ich nach einer Interaktion der bestreffenden Usersession ohne das dieser unbedingt eingeloggt sein muss im gesamten Shop eigene/andere Preise anzeigen lassen kann.

Ansich sollte ja auch der hash der aus currency und Tax berechnet wird zur invalidierung führen sollte, aber auch dieses Verhalten konnte ich nicht nachstellen. Welche Werte müssen hierzu zwingend in der Session vorhanden sein?

Ich hoffe mir kann irgendwer helfen, ich habe recht viel probiert was alles nichts gebracht hat.

Viele Grüße

Hi lorenz1,

mir ist nicht so ganz klargeworden was du erreichen willst, aber neben den cache cookies / no cache tags gibt es auch noch einen anderen Mechanismus der sich ‚action tags‘ nennt. Damit kannst du bestimmte Elemente innerhalb einer Seite vom cache ausnehmen und jeweils „frisch“ anfordern. Schau dir mal diesen Post an, der erklärt das sehr gut: https://developers.shopware.com/blog/2016/07/11/on-action-tags/

Ansonsten ist die Funktionsweise des Caches hier erklärt: https://developers.shopware.com/developers-guide/http-cache/
Was davon verstehst du denn nicht?

LG Phil

Hi,

das ESI System / Aktipn Tags ist mir ein Begriff, hiermit habe ich auch bereits viel und erfolgreich gearbeitet. Im aktuellen Fall geht es jedoch um individuelle Preisanpassungen, welche natürlich Shopweit funktionieren sollen. Ich setze einen entsprechendes Tag per JS/Ajax Request in die Session, das funktioniert soweit auch wunderbar, auf den von Hause aus nicht gecachten Seiten wie dem Warenkorb greift alles wie gewünscht.
Mein Ansatz war also ähnlich dem Kundengruppen switch ein weiteren Wert in die Session schrieben zu können um genau diesen Effekt zu erzielen. Die Ideallösung wäre das sich je gesetztem Tag ein eigener Pool an gecachten Seiten aufbaut, ich könnte aber auch damit leben das die Seite nach gesetztem Tag ohne Frontendcache läuft. Wie ich das verstehe ist eben genau der nocache cookie der Ansatz der dies zur Folge haben sollte. Hier ist leider die dokumentation recht dürftig. Ich habe mir im Core den Code vom Frontendcache angesehen um nachzuvollziehen wie ein solcher cookie aufgebaut ist/ Was für Werte ich diesem mitgeben müsste. Aber genau an dieser Stelle bräcuhte ich etwas mehr infos da das bis dato nicht klappt.
Versucht die Notwendigen Infos zu bekommen habe ich auf diesen, und weiterführenden Seiten:
https://docs.shopware.com/de/shopware-5-de/einstellungen/cache-performance-modul#http-cache

https://developers.shopware.com/developers-guide/http-cache/

Vielen Dank für dein Interesse / deine Hilfe.
LG Lars

Hmm. Knifflig. Wäre umleiten auf einen Subshop vielleicht noch eine Idee? Weil den Cache für Listing und Details komplett rausnehmen würde ich nicht machen. Verschiedene Renditions einer Seite die alle im Cache liegen wüsste ich auch nicht wie man das hinbekommt, aber via Subshop(s) würdest du ja quasi genau das erreichen (und könntest dort jeweils andere Preise haben).

Aber vielleicht meldet sich ja noch jemand der tiefer in der Materie steckt als ich und hat noch einen besseren Vorschlag…

LG Phil

Hi,

das ist leider auch keine Alternative, aber wäre zumindest ein ansatz. Grundsätzlich geht das ja auch per Kundengruppe, das hätte den gleichen Effekt, aber am Ende gibt es ja eben dieses cachecookie Konzept.

Derzeit habe ich den Stand erreicht das ich per gesetztem Cookie nachweisbar Daten aus verschiedenen cache pools ausgeleifert bekomme, es scheint nur das Shopware hier nicht 100% verlässlich läuft, den ab und an werden doch wieder falsche Preise ausgespielt (welche dann zwar aus dem gewünschten cachepool kommen, aber trotzdem irgendwie mit falschen Preisen generiert wurden). Hier habe ich nun gerade leider garkeine Idee mehr.

Was ich weiterhin nicht verstehe ist das nocache Tag Konzept. Es gibt hier ja mögliche Werte wie price-1 etc (wobei die 1 die subshop id darstellt), dann kann man im Backend Controller definieren welche auf den Tag reagieren sollen und dann nicht gecacht ausgeliefert werden. Nur was sollte ich davon haben nur auf bestimmten controllern die Preise anders ausliefern zu lassen? Hier habe ich das Gefühl das ich die ganze Idee dahinter nochnicht richtig verstanden habe.

LG