Theo những gì tôi hiểu, đây là loại tương đương với getCacheTags
phương pháp của Magento 1.
Các getIdentities
lớ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 getIdentities
phươ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 getIdentities
phương thức, tất cả chúng đều tham chiếu một getIdentities
phươ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 getIdentities
phươ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-Tags
tiêu đề.
Tiêu đề này sau đó được sử dụng trong Magento/Framework/App/PageCache/Kernel.php
trong 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.php
tệp để có thể nó sẽ bị xóa sau đó.