Ich sehe, dass viele Modelle in Magento 2 implementiert sind Magento\Framework\DataObject\IdentityInterface
.
Diese Schnittstelle hat eine einzige Methode namens getIdentities
Die Implementierungen der Methode geben normalerweise zurück return [self::CACHE_TAG . '_' . $this->getId()];
.
Ein Beispiel finden Sie hier
Wozu dient das?
magento2
model
magento-2.0
interface
Marius
quelle
quelle
dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
Datei vorhanden, sodass sie möglicherweise später entfernt werden soll.vendor/magento/module-page-cache/Controller/Block/Esi.php
getIdentities
Methode wird für eine Blockklasse in diesem Fall aufgerufen, das OP fragt nach denAntworten:
Nach meinem Verständnis ist dies eine Art Äquivalenz der
getCacheTags
Methode von Magento 1.Die
getIdentities
from-Modellklassen werden dann in jeder Blockklasse verwendet, die auf dieses Modell verweist.Ok, nehmen wir die
/Magento/Catalog/Model/Category.php
:Auf diese Methode wird dann verwiesen in
/Magento/Catalog/Block/Category/View.php
:In M2 müssen Sie jetzt das Cache-Tag mit der
getIdentities
Methode auf Modellebene deklarieren. Anschließend können Sie es in Blöcken verwenden, die auf diese Modelle verweisen.Wenn Sie jeden Block überprüfen, der die
getIdentities
Methode implementiert , verweisen alle auf eine entsprechende ModellmethodegetIdentities
oder ein entsprechendes Modell-Cache-Tag wie z\Magento\Catalog\Model\Product::CACHE_TAG
Dann werden diese
getIdentities
Blockmethoden in Varnish aus Caching-Gründen verwendet, wie von Matthéo erwähnt, um denX-Magento-Tags
Header zu setzen .Dieser Header wird dann
Magento/Framework/App/PageCache/Kernel.php
in derprocess()
Methode verwendet, um den Cache zu speichern:quelle
Gemessen am Klassenkommentar
Magento\Framework\DataObject\IdentityInterface
wird er für den Cache verwendet und erstellt eine eindeutige Entitäts-ID, die in den Varnish ESI-Headern invendor/magento/module-page-cache/Controller/Block/Esi.php
Zeile 28 verwendet wird.quelle
Das IdentityInterface erzwingt, dass die Model-Klasse die Methode getIdentities () definiert, die eine eindeutige ID für das Modell zurückgibt. Sie dürfen diese Schnittstelle nur verwenden, wenn für Ihr Modell nach dem Datenbankbetrieb eine Cache-Aktualisierung erforderlich ist und Informationen auf der Front-End-Seite angezeigt werden.
quelle