Je vois que beaucoup de modèles de Magento 2 sont mis en œuvre Magento\Framework\DataObject\IdentityInterface
.
Cette interface a une seule méthode appelée getIdentities
Les implémentations de la méthode retournent généralement return [self::CACHE_TAG . '_' . $this->getId()];
.
Un exemple peut être trouvé ici A
quoi cela sert-il?
magento2
model
magento-2.0
interface
Marius
la source
la source
dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
fichier donc peut-être qu'elle est destinée à être supprimée plus tard.vendor/magento/module-page-cache/Controller/Block/Esi.php
ligne 28getIdentities
méthode est appelée sur une classe de bloc dans ce cas, l'OP pose des questions sur les classes de modèlesRéponses:
D'après ce que j'ai compris, c'est une sorte d'équivalence de la
getCacheTags
méthode de Magento 1.Les
getIdentities
classes from model sont ensuite utilisées dans chaque classe de bloc référençant ce modèle.Ok, prenons le
/Magento/Catalog/Model/Category.php
:Cette méthode est ensuite référencée dans
/Magento/Catalog/Block/Category/View.php
:Dans M2, vous devez maintenant déclarer la balise de cache avec la
getIdentities
méthode au niveau du modèle, puis vous pouvez l'utiliser dans des blocs référençant ces modèles.Si vous vérifiez chaque bloc implémentant la
getIdentities
méthode, ils font tous référence à unegetIdentities
méthode de modèle correspondante ou à une balise de cache de modèle correspondante telle que\Magento\Catalog\Model\Product::CACHE_TAG
Ensuite, ces
getIdentities
méthodes de blocage sont utilisées dans Varnish pour des raisons de mise en cache comme mentionné par Matthéo pour définir l'en-X-Magento-Tags
tête.Cet en-tête est ensuite utilisé dans
Magento/Framework/App/PageCache/Kernel.php
laprocess()
méthode pour enregistrer le cache:la source
A en juger par le
Magento\Framework\DataObject\IdentityInterface
commentaire de classe, il est utilisé pour le cache et crée un ID d'entité unique qui est utilisé dans les en-têtes ESI Varnish à lavendor/magento/module-page-cache/Controller/Block/Esi.php
ligne 28.la source
IdentityInterface forcera la classe Model à définir la méthode getIdentities () qui renverra un identifiant unique pour le modèle. Vous ne devez utiliser cette interface que si votre modèle nécessite une actualisation du cache après l'opération de la base de données et le rendu des informations sur la page frontend.
la source