Из того, что я понял, это своего рода эквивалентность getCacheTagsметода Magento 1.
getIdentitiesИз классов моделей затем используется в каждом блоке класса , ссылающегося эту модель.
Хорошо, давайте возьмем /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;
}
Этот метод затем упоминается в /Magento/Catalog/Block/Category/View.php:
public function getIdentities()
{
return $this->getCurrentCategory()->getIdentities();
}
В M2 вам теперь нужно объявить тег кеша getIdentitiesметодом на уровне модели, а затем использовать его в блоках, ссылающихся на эти модели.
Если вы проверите каждый блок, реализующий getIdentitiesметод, все они ссылаются на соответствующий getIdentitiesметод модели или соответствующий тег кэша модели, такой как\Magento\Catalog\Model\Product::CACHE_TAG
Затем эти блочные getIdentitiesметоды используются в Varnish для целей кэширования, как было сказано Маттео для установки X-Magento-Tagsзаголовка.
Этот заголовок затем используется Magento/Framework/App/PageCache/Kernel.phpв process()методе , чтобы сохранить кэш:
$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файле, поэтому, возможно, он будет удален позже.