私が理解したことから、これは一種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
メソッドは、X-Magento-Tags
ヘッダーを設定するためにMatthéoが述べたように、キャッシュの理由でVarnishで使用されます。
このヘッダは、その後に使用されている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
ファイルに存在するため、後で削除することを意図している可能性があります。