З того, що я зрозумів, це своєрідна еквівалентність 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 з причин кешування, як згадував Matthéo для встановлення 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
файлі, тому, можливо, його планується видалити пізніше.