D'après ce que j'ai compris, c'est une sorte d'équivalence de la getCacheTags
méthode de Magento 1.
Les getIdentities
classes 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 getIdentities
mé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 getIdentities
méthode, ils font tous référence à une getIdentities
méthode de modèle correspondante ou à une balise de cache de modèle correspondante telle que\Magento\Catalog\Model\Product::CACHE_TAG
Ensuite, ces getIdentities
mé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-Tags
tête.
Cet en-tête est ensuite utilisé dans Magento/Framework/App/PageCache/Kernel.php
la 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.php
fichier donc peut-être qu'elle est destinée à être supprimée plus tard.