Während des Ajax-Aufrufs zum Absenden der Bestellung beim einseitigen Bestellvorgang wird mehrmals das Cookie "CUSTOMER_SEGMENT_IDS" mit dem Wert "Gelöscht" angezeigt. Dies führt dazu, dass die Headergröße weit über das zulässige Limit hinausgeht (in einigen Szenarien mehr als 8 KB) und somit Fehler bei der Bestellung verursacht werden. Dies geschieht nur für Kunden, die mehr als 4 Adressen in ihrem Adressbuch haben.
Ich habe es an der Stelle gefunden, Enterprise_PageCache_Model_Observer
an der dieses Cookie durch den Magento-Kerncode gesetzt wird. Für den Umgang mit Cookies oder Kundensegmenten sind keine Anpassungen im Geschäft vorhanden.
Ich plane, diese Klasse neu zu schreiben, um alle "gelöschten" Cookies vollständig aus der Antwort zu entfernen. Gibt es einen Nachteil dieses Ansatzes, den ich beachten sollte? Alles, was ich ähnlich finden konnte, ist diese Frage: Mehrere Cookies in Ajax rufen auf, aber diese Frage enthält keine Aktivität.
Hat noch jemand dieses Problem früher erlebt? Gibt es einen bestimmten Grund für dieses Verhalten in der Magento-Codebasis?
Antworten:
Magento 1.x EE FPC speichert die gesamte Seite im Cache. Es gibt jedoch einige Abschnitte auf der Seite, die während der Customer Journey neu erstellt werden müssen. Wenn Sie beispielsweise ein Produkt in den Warenkorb legen, sollte der Minicart aktualisiert werden.
Es macht keinen Sinn, FPC zu haben, wenn wir den gesamten Cache jedes Mal ungültig machen, wenn der Kunde ein Produkt in den Warenkorb legt. Da der Warenkorb auf allen Seiten sichtbar ist, müssen wir den gesamten Cache leeren, um den aktualisierten Warenkorb zu sehen.
Um dieses Problem zu beheben, haben sie Cache-Container eingeführt. Sie finden diese Container unter
app/code/core/Enterprise/PageCache/Model/Container
.Dadurch wird der spezifische Abschnitt der Seite neu erstellt, indem die Cache-ID überprüft wird. Die ID kann eine Kombination aus mehreren Variablen, Cookies und Konstanten sein. Der Zweck dieser ID besteht darin, den Abschnittscache bei Bedarf ungültig zu machen.
Z.B
Wenn Sie überprüfen, wird
Enterprise_PageCache_Model_Container_Minicart
die Cache-ID mit der folgenden Methode generiertJedes Mal, wenn das Zitat aktualisiert wird, wird diese Cache-ID aus dem Cache gelöscht.
Enterprise_PageCache_Model_Observer::registerQuoteChange
. Bei der nächsten sofortigen Anforderung kann das System den Inhalt dieser Cache-ID nicht finden. So wird der Inhalt neu generiert und im Cache gespeichert.Enterprise_PageCache_Model_Container_Minicart::_renderBlock
Das Cookie CUSTOMER_SEGMENT_IDS wird im
Enterprise_PageCache_Model_Container_Banner
Container verwendet. Banner können basierend auf Kundensegmenten angezeigt werden. Kundensegmente können unter verschiedenen Bedingungen einschließlich Kundenadressvariablen erstellt werden. Die Länge dieses Cookies hängt von den Kundensegmenten ab.Der Zweck dieses Cookies besteht darin, die Cache-Abschnitte ungültig zu machen und Banner basierend auf Kundensegmenten anzuzeigen. Wenn Sie diese Funktion nicht verwenden, können Sie sie entfernen. Die empfohlene Lösung besteht darin, die Headergröße vom Server zu erhöhen.
Hoffe das hilft!
quelle