Warum macht die Magento-Invalidierung des vollständigen Seitencachings beim Produktspeichern eine Seite tatsächlich zwischengespeichert und was bewirkt die Aktualisierung, da sie nicht zwischengespeichert wird?
Also Zwischenspeichern ist natürlich was verwirrt mich am meisten bei Magento, wie auch für die meisten anderen bin ich sicher. Derzeit eine der Seiten, auf die wir arbeiten, ist auf der Enterprise und nutzt FPC natürlich. Das problem ist, wir haben ein Inventar-update, das alle 15 Minuten fährt. Viele Aufträge platziert sind, um CSR-über das Telefon und durch einen Katalog in einem externen system außerhalb von Magento.
Alle 15 Minuten ein script lief, zu überprüfen Inventar in das system und zu sehen, ob es unterscheidet sich dann das, was in Magento. Wenn es einen Unterschied gibt, dann das Inventar ist in Magento aktualisiert. Mit allen Magento-Methoden, kein sql oder so etwas.
Haben wir immer hatten caching-Probleme und haben versucht, die neuesten Techniken, wenn Sie herauskommen. Die Letzte, wir sind versucht, Redis, und wir haben gute Erfolge auf anderen Seiten. Aber wir sind trotzdem verrückt Last auf dem server und es ist offensichtlich, dass die Seiten nicht zwischengespeichert werden.
Nach dem Graben in den code scheint es, dass nach immer jedes Modell speichern oder admin-Produkt-controller speichern Sie es sieht, um zu sehen, wenn der cache muss für ungültig erklärt werden. Es wird angezeigt, dass das ändern aller attribute, zumindest Inventar mark FPC benötigen, als ungültig erklärt werden.
Ich bin verwirrt über das, was Abwertung bedeutet, denn vor einer Weile hatten wir eine Frage aus, um Kunden-support über etwas ähnliches, und dies war die Antwort
Full-Page-cache erhalten
entwertet der Staat bei der änderungen auf die Produkte, Kategorien, CMS
auch wenn die Aktie sank nach einem Verkauf.Nun bei full-page-cache wird für ungültig Staat bedeutet dies nicht,
dass sich etwas verändert auf Ihrem frontend jedoch alle änderungen angewendet
nach der letzten Aktualisierung wird nicht angezeigt im frontend.Jedoch, wenn mit der FPC validiert und zu allen Zeiten ist ein muss für Ihre
business-Logik könnte man sicherlich setzen Sie Ihre Magento-Installation
aktualisieren Sie automatisch durch einen cron-Funktionalität, wie oft Sie
Wunsch.
Jedoch auf alle tests, die ich getan habe, auf beiden 1.9 und 1.11 Unternehmen, es wird angezeigt, wenn FPC ungültig ist, wird die Antwort nicht sein gezogen aus dem cache. Das ist widersprüchlich zu dem, was Sie gesagt haben, über die es einfach nicht mit den neueren updates.
Gibt es etwas, was ich bin fehlt? Hat jemand eine gute Erklärung dafür, wie die Aufhebungs-Werke in Magento speziell für FPC oder eine gute Anbindung, um vollständig zu verstehen, den Prozess und den code?
Können Sie versuchen, diese selbst für jede Seite, die ganze Seite gecached. Aber es ist mein Verständnis, dass die Methode processRequest
im /app/code/core/Mage/Core/Model/Cache.php
sollte der Inhalt mit den zwischengespeicherten Antwort und gibt true zurück, wenn die Seite im Cache zwischengespeichert werden.
Zu testen, gehen Sie auf keine Seite stellen Sie sicher, dass Sie es zwischengespeichert und true zurückgeben. Gehen Sie in Bearbeiten und ein Produkt, in unserem Fall die Menge. Hierdurch wird der FPC. Aber wenn Sie jetzt die Seite geladen, die zwischengespeichert wurde, bevor es den Wert false zurück in diese Methode und nicht eine zwischengespeicherte Seite. Ich weiß nicht, ob dies richtig ist, um in der Lage sein zu sagen, wenn eine Seite gecacht wird oder nicht, aber das ist, wo meine Untersuchungen führen mich. Bitte korrigieren Sie mich, wenn ich falsch bin.
UPDATE:
Bei der weiteren Untersuchung habe ich festgestellt, dass, wenn Sie speichern ein Produkt in der admin, der controller-Aktion
Mage_Adminhtml_Catalog_ProductController::saveAction()
aufrufen, die folgende Methode
Mage::getModel('catalogrule/rule')->applyAllRulesToProduct($productId)
Dann in der Mage_CatalogRule_Model_Resource_Rule
Klasse, die applyAllRulesForDateRange
Methode aufgerufen wird und dass löst das Ereignis
catalogrule_after_apply
Dem die Full-Page-Cache-Modul ist die Beobachtung und feuern die saubere cache-Methode für die FPC-tag. Im wesentlichen das löschen aller FPC-cache-Einträge.
Ich sehe nicht, warum dies ist notwendig, wenn zuvor die Logik ist clearing das FPC-Datensätze, die gebunden sind, um die Produkt-und Kategorie-tags. Ist das ein bug?
InformationsquelleAutor der Frage dan.codes | 2012-06-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
FPC ist die Beobachtung Bestandsveränderungen, denn die Absicht ist die Anzeige out-of-Lager für alle Produkte, die dekrementiert bis null. Das Update wäre ein Ereignis zu erstellen, Versand, Wann ein Produkt null schlägt, anstatt jedes mal alle änderungen der Ware im Lager und umschreiben FPC zu beobachten, dass ein Ereignis anstelle von das original.
Andere Methode wäre, nur erlischt die Teile-cache im Zusammenhang mit den Produkten aktualisiert, aber das wäre eine ziemlich deutliche änderung der Architektur.
InformationsquelleAutor der Antwort gazarsgo
Sollen Sie erstellen eine neue benutzerdefinierte indexer
Mage_Index_Model_Indexer_Abstract , und erstellen Sie eine neue resource model api-Methoden mit cron-jobs
InformationsquelleAutor der Antwort Adrian Romero
der phoenix-Seite-Cache-Modul löscht den Produkt-Seiten und Kategorie-Seiten zu, sondern lässt einige Bereiche der cache-Invalidierung aufgedeckt. es auch nicht gut umgehen mit dynamischen Inhalten.
vielleicht sollten Sie sich das aoe_static-Modul macht einen guten job laden von dynamischen Inhalten durch laden der default-layout-und rendering der Blöcke mit einem ajax-Aufruf. diese ajax-call auch setzt den cookie zu erlauben, für Sitzungen.
du musst vorsichtig sein, mit 2 Modulen in ein ziemlich schwieriger Bereich, vielleicht sollten Sie diese magento-open source full-page-cache
InformationsquelleAutor der Antwort user1743741
Haben, Lesen Sie den Artikel schrieb ich auf Full-Page-Caching in Magento. Es hebt einen bug-fix, die plötzlich macht das ganze Cachen Mechanismus Sinn!
http://www.excitedcroc.com/article/why-the-magento-full-page-cache-doesnt-expire
Im wesentlichen gibt es einen bug in der Weise, die Magento nutzt das Zend-Framework-caching-Mechanismus.
Das Problem ist, dass der Zend-library-cache-Klassen und der Magento-enterprise-cache-Klassen verwenden eine Mischung aus null und false, die in Ihren Funktionen denen der Wert für die Lebensdauer. Weil null !== falsch eine Standard-Lebensdauer von 10 Tagen wird immer verwendet. Das problem ergibt sich aus der processRequestResponse Funktion in app/code/core/Enterprise/PageCache/Model/Processor.php. Da keine lifetime-value übergeben wird, um die cache-Instanz auf speichern standardmäßig auf null.
Ändern der Standard-Wert für die Lebensdauer parameter des speichern-Funktion app/code/core/Mage/Core/Model/Cache.php wird dieses Problem lösen. Nur setzen Sie ihn auf false anstelle von null ( die verlinkten Artikel oben erklärt vollständig, warum ).
- public function save( $data, $id, $tags = array(), $lifeTime = null )
+ public function save( $data, $id, $tags = array(), $lifeTime = false )
InformationsquelleAutor der Antwort Chris Pook