Veo que muchos de los modelos en Magento 2 se implementan Magento\Framework\DataObject\IdentityInterface
.
Esta interfaz tiene un único método llamado getIdentities
Las implementaciones del método generalmente regresan return [self::CACHE_TAG . '_' . $this->getId()];
.
Un ejemplo se puede encontrar aquí
¿Para qué se usa esto?
magento2
model
magento-2.0
interface
Marius
fuente
fuente
dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
archivo, por lo que tal vez esté destinada a eliminarse más adelante.vendor/magento/module-page-cache/Controller/Block/Esi.php
getIdentities
método se llama en una clase de bloque en este caso, el OP pregunta por las clases de modelosRespuestas:
Por lo que entendí, esto es una especie de equivalencia del
getCacheTags
método de Magento 1.Las
getIdentities
clases de modelo from se utilizan en cada clase de bloque que hace referencia a este modelo.Ok, tomemos
/Magento/Catalog/Model/Category.php
:Este método se hace referencia en
/Magento/Catalog/Block/Category/View.php
:En M2, ahora debe declarar la etiqueta de caché con el
getIdentities
método a nivel de modelo, luego puede usarla en bloques que hagan referencia a esos modelos.Si marca cada bloque que implementa el
getIdentities
método, todos hacen referencia a ungetIdentities
método de modelo correspondiente o una etiqueta de caché de modelo correspondiente, como\Magento\Catalog\Model\Product::CACHE_TAG
Luego, esos
getIdentities
métodos de bloque se utilizan en Varnish por razones de almacenamiento en caché como lo menciona Matthéo para establecer elX-Magento-Tags
encabezado.Este encabezado se usa
Magento/Framework/App/PageCache/Kernel.php
en elprocess()
método para guardar el caché:fuente
A juzgar por el
Magento\Framework\DataObject\IdentityInterface
comentario de la clase , se usa para la memoria caché y crea una ID de entidad única que se usa en los encabezados Varnish ESI en lavendor/magento/module-page-cache/Controller/Block/Esi.php
línea 28.fuente
IdentityInterface obligará a la clase Model a definir el método getIdentities () que devolverá una identificación única para el modelo. Solo debe usar esta interfaz si su modelo requirió una actualización de caché después de la operación de la base de datos y mostrar información en la página de la interfaz.
fuente