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
:
public function getIdentities()
{
$identities = [
self::CACHE_TAG . '_' . $this->getId(),
];
if ($this->hasDataChanges() || $this->isDeleted()) {
$identities[] = Product::CACHE_PRODUCT_CATEGORY_TAG . '_' . $this->getId();
}
return $identities;
}
Este método é referenciado em /Magento/Catalog/Block/Category/View.php
:
public function getIdentities()
{
return $this->getCurrentCategory()->getIdentities();
}
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 um getIdentities
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 o X-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:
$tagsHeader = $response->getHeader('X-Magento-Tags');
$tags = $tagsHeader ? explode(',', $tagsHeader->getFieldValue()) : [];
$response->clearHeader('Set-Cookie');
$response->clearHeader('X-Magento-Tags');
if (!headers_sent()) {
header_remove('Set-Cookie');
}
$this->cache->save(serialize($response), $this->identifier->getValue(), $tags, $maxAge);
dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
arquivo, então talvez ela deva ser removida mais tarde.