Warum deaktiviert der Ganzseiten-Cache den Block-Cache?

13

Ich habe einen statischen Teil, der auf jeder Seite enthalten ist (Navigation), dessen Generierung jedoch viel Zeit in Anspruch nimmt. Aus diesem Grund habe ich eine Cache-Lebensdauer und einen statischen Cache-Schlüssel festgelegt.

Funktioniert einwandfrei, bis FPC aktiviert ist. Dann wird der Block für eine neu aufgerufene Seite immer noch neu generiert und nicht aus dem Blockcache bedient.

Es gibt diese Zeile in Enterprise_PageCache_Model_Observer:

Mage::app()
    ->getCacheInstance()
    ->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); // disable blocks cache

Was ist der Grund dafür? Es ist für mich sinnvoll, bestimmte Blöcke auch dann zwischenzuspeichern, wenn FPC aktiviert ist. Andernfalls wird die Generierung von Seiten, die nicht vollständig aus dem Cache bereitgestellt werden, verlangsamt.

  1. Was ist die gestalterische Entscheidung dahinter?
  2. Was ist eine gute Lösung dafür?
  3. Wäre es schädlich, wenn ich dieses Block-Cache-Verbot einfach aufheben würde?
Alex
quelle
Ich weiß, das ist eine alte Frage, aber haben Sie etwas dazu gefunden?
Xelber

Antworten:

1

Dieser Fehler wurde in Magento 1.14.2.0 behoben. (Siehe http://merch.docs.magento.com/ee/user_guide/magento/release-notes-ee-1.14.2.html unter Bekannte Probleme.)

user487772
quelle
2
Ich habe gerade am 1.14.2.4 darüber geredet. Ich kann sehen, dass sich die Logik im Laufe der Zeit geändert hat. Der Code ist von if: umgeben, if ($this->_processor->canProcessRequest($request) && ($request->isStraight() || $this->_processor->getRequestProcessor($request)) ) { Mage::app()->getCacheInstance()->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); } aber ich kann keine Gründe dafür finden, warum Sie den Blockcache sperren würden. Können Sie mehr aufklären?
PanPipes
2

Um FPC für dynamische Blöcke zu deaktivieren, z. B. in der Kasse oder auf der Warenkorbseite. Bei der dritten Frage sollten Sie meiner Meinung nach dies nicht tun, da dies den FPC-Prozess beschädigen könnte (um ehrlich zu sein, sollten wir auch den Quellcode überprüfen).

Oğuz Çelikdemir
quelle
Betrifft Ihr erster Teil meine erste Frage? Wenn ja, warum muss der Blockcache deaktiviert werden, um FPC in der Kasse oder auf der Warenkorbseite zu deaktivieren? Tatsächlich ist der Blockcache nur dann deaktiviert, wenn die gesamte Seite zwischengespeichert ist.
Alex
Ich habe gerade den Quellcode überprüft, der die Benutzer-Cookies kontrolliert. Wenn der Benutzer das Cookie blockiert hat, blockiert die FPC die Caches. Die _getCookie-Funktion gibt die Enterprise_PageCache_Model_Cookie-Instanz zurück, die das Benutzer-Cookie steuert.
Oğuz Çelikdemir
Was hat das mit dem Cookie zu tun? Und von welcher Codezeile sprechen Sie? verwirrt
Alex
Alex, heute Nacht werde ich noch einmal nachsehen und dir die notwendigen Codeblöcke schicken.
Oğuz Çelikdemir