Vejo que muitos dos modelos no Magento 2 são implementados Magento\Framework\DataObject\IdentityInterface
.
Essa interface possui um único método chamado getIdentities
As implementações do método geralmente retornam return [self::CACHE_TAG . '_' . $this->getId()];
.
Um exemplo pode ser encontrado aqui Para
que isso é usado?
magento2
model
magento-2.0
interface
Marius
fonte
fonte
dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
arquivo, então talvez ela deva ser removida mais tarde.vendor/magento/module-page-cache/Controller/Block/Esi.php
linha 28getIdentities
método é chamado em uma classe bloco, neste caso, o OP é perguntando sobre os modelos de aulasRespostas:
Pelo que entendi, esse é o tipo de equivalência do
getCacheTags
método do Magento 1.As
getIdentities
classes from model são usadas em todas as classes de bloco que fazem referência a este modelo.Ok, vamos dar o
/Magento/Catalog/Model/Category.php
:Este método é referenciado em
/Magento/Catalog/Block/Category/View.php
:No M2, agora você precisa declarar a tag de cache com o
getIdentities
método no nível do modelo, para usá-la em blocos que referenciam esses modelos.Se você verificar todos os blocos que implementam o
getIdentities
método, todos eles fazem referência a umgetIdentities
método de modelo correspondente ou a uma tag de cache de modelo correspondente, como\Magento\Catalog\Model\Product::CACHE_TAG
Em seguida, esses
getIdentities
métodos de bloco são usados no Varnish por razões de armazenamento em cache, como mencionado por Matthéo, para definir oX-Magento-Tags
cabeçalho.Esse cabeçalho é então usado no
Magento/Framework/App/PageCache/Kernel.php
diretórioprocess()
método para salvar o cache:fonte
A julgar pelo
Magento\Framework\DataObject\IdentityInterface
comentário da classe, ele é usado para armazenar em cache e criar um ID de entidade exclusivo usado nos cabeçalhos do Varnish ESI navendor/magento/module-page-cache/Controller/Block/Esi.php
linha 28.fonte
O IdentityInterface forçará a classe Model a definir o método getIdentities () que retornará um ID exclusivo para o modelo. Você deve usar essa interface apenas se o seu modelo exigiu atualização de cache após a operação do banco de dados e renderizou informações na página de front-end.
fonte