D'après ce que j'ai compris, c'est une sorte d'équivalence de la getCacheTagsméthode de Magento 1.
Les getIdentitiesclasses 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:
public function getIdentities()
{
$identities = [
self::CACHE_TAG . '_' . $this->getId(),
];
if ($this->hasDataChanges() || $this->isDeleted()) {
$identities[] = Product::CACHE_PRODUCT_CATEGORY_TAG . '_' . $this->getId();
}
return $identities;
}
Cette méthode est ensuite référencée dans /Magento/Catalog/Block/Category/View.php:
public function getIdentities()
{
return $this->getCurrentCategory()->getIdentities();
}
Dans M2, vous devez maintenant déclarer la balise de cache avec la getIdentitiesmé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 getIdentitiesméthode, ils font tous référence à une getIdentitiesméthode de modèle correspondante ou à une balise de cache de modèle correspondante telle que\Magento\Catalog\Model\Product::CACHE_TAG
Ensuite, ces getIdentitiesmé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-Tagstête.
Cet en-tête est ensuite utilisé dans Magento/Framework/App/PageCache/Kernel.phpla process()méthode pour enregistrer le 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.phpfichier donc peut-être qu'elle est destinée à être supprimée plus tard.