मैंने जो कुछ समझा, उससे यह 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();
}
एम 2 में, आपको अब getIdentities
मॉडल स्तर पर विधि के साथ कैश टैग घोषित करना होगा , फिर आप उन मॉडलों का संदर्भ देने वाले ब्लॉकों में इसका उपयोग कर सकते हैं।
यदि आप getIdentities
विधि को लागू करने वाले प्रत्येक ब्लॉक की जांच करते हैं , तो वे सभी एक संबंधित मॉडल getIdentities
विधि या एक संबंधित मॉडल कैश टैग जैसे\Magento\Catalog\Model\Product::CACHE_TAG
फिर उन ब्लॉक getIdentities
विधियों का उपयोग 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
फाइल में मौजूद है, तो शायद इसे बाद में हटाने का इरादा है।