Dari apa yang saya mengerti, ini adalah semacam kesetaraan getCacheTags
metode Magento 1.
Kelas getIdentities
dari model kemudian digunakan di setiap kelas blok yang mereferensikan model ini.
Ok mari kita ambil /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;
}
Metode ini kemudian dirujuk dalam /Magento/Catalog/Block/Category/View.php
:
public function getIdentities()
{
return $this->getCurrentCategory()->getIdentities();
}
Dalam M2, Anda sekarang harus mendeklarasikan tag cache dengan getIdentities
metode di tingkat model, maka Anda dapat menggunakannya dalam blok yang merujuk pada model-model itu.
Jika Anda memeriksa setiap blok yang menerapkan getIdentities
metode ini, mereka semua merujuk getIdentities
metode model yang sesuai atau tag cache model yang sesuai seperti\Magento\Catalog\Model\Product::CACHE_TAG
Kemudian getIdentities
metode blok tersebut digunakan dalam Varnish untuk alasan caching seperti yang disebutkan oleh Matthéo untuk mengatur X-Magento-Tags
header.
Header ini kemudian digunakan di Magento/Framework/App/PageCache/Kernel.php
dalam process()
metode untuk menyimpan 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
file jadi mungkin ini dimaksudkan untuk dihapus nanti.