Da quello che ho capito, questo è un po 'l'equivalenza del getCacheTagsmetodo di Magento 1.
Le getIdentitiesclassi del modello from vengono quindi utilizzate in ogni classe di blocco che fa riferimento a questo modello.
Ok prendiamo il /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;
}
Questo metodo viene quindi indicato in /Magento/Catalog/Block/Category/View.php:
public function getIdentities()
{
return $this->getCurrentCategory()->getIdentities();
}
In M2, ora devi dichiarare il tag cache con il getIdentitiesmetodo a livello di modello, quindi puoi usarlo in blocchi che fanno riferimento a quei modelli.
Se si controlla ogni blocco che implementa il getIdentitiesmetodo, fanno tutti riferimento a un getIdentitiesmetodo modello corrispondente o un tag cache modello corrispondente come\Magento\Catalog\Model\Product::CACHE_TAG
Quindi quei getIdentitiesmetodi di blocco sono usati in Varnish per motivi di cache come menzionato da Matthéo per impostare l' X-Magento-Tagsintestazione.
Questa intestazione viene quindi utilizzato in Magento/Framework/App/PageCache/Kernel.phpnel process()metodo per salvare la 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.phpfile, quindi forse dovrebbe essere rimossa in seguito.