Theo những gì tôi hiểu, đây là loại tương đương với getCacheTagsphương pháp của Magento 1.
Các getIdentitieslớp mô hình sau đó được sử dụng trong mọi lớp khối tham chiếu mô hình này.
Ok, hãy lấy /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;
}
Phương pháp này sau đó được tham chiếu trong /Magento/Catalog/Block/Category/View.php:
public function getIdentities()
{
return $this->getCurrentCategory()->getIdentities();
}
Trong M2, bây giờ bạn phải khai báo thẻ bộ đệm với getIdentitiesphương thức ở cấp mô hình, sau đó bạn có thể sử dụng nó trong các khối tham chiếu các mô hình đó.
Nếu bạn kiểm tra mọi khối thực hiện getIdentitiesphương thức, tất cả chúng đều tham chiếu một getIdentitiesphương thức mô hình tương ứng hoặc thẻ bộ đệm mô hình tương ứng, chẳng hạn như\Magento\Catalog\Model\Product::CACHE_TAG
Sau đó, các getIdentitiesphương thức chặn đó được sử dụng trong Varnish vì lý do lưu trữ như được đề cập bởi Matthéo để đặt X-Magento-Tagstiêu đề.
Tiêu đề này sau đó được sử dụng trong Magento/Framework/App/PageCache/Kernel.phptrong process()phương pháp để tiết kiệm bộ nhớ 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.phptệp để có thể nó sẽ bị xóa sau đó.