จากสิ่งที่ฉันเข้าใจนี่คือความเท่าเทียมกันของgetCacheTags
วิธีการของวีโอไอพี 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
วิธีการบล็อกเหล่านั้นในวานิชสำหรับเหตุผลการแคชตามที่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
ไฟล์ดังนั้นอาจมีวัตถุประสงค์เพื่อลบในภายหลัง