Vì đây là EE, tôi có thể sử dụng hỗ trợ Magento nhưng tôi cũng tự mình giải quyết mọi việc để giúp tập trung vào vấn đề và có được giải pháp nhanh nhất có thể. Các thay đổi mã được Magento cung cấp, do đó, áp dụng chúng cho các tệp ứng dụng / mã / lõi thực tế là tốt mặc dù bạn luôn có thể sao chép các tệp trong / app / code / local của mình và áp dụng các thay đổi ở đó.
Vấn đề là phương pháp bộ đệm ẩn được thêm vào trong 1.14.2 không tạo ra khóa bộ đệm duy nhất nên khi tôi có nhiều khối được sử dụng trong không gian bộ điều khiển danh mục, khóa bộ đệm được tạo cuối cùng chỉ là duy nhất cho lần truy cập trang đầu tiên, dẫn đến tất cả các trang đó để hiển thị nội dung trùng lặp.
Cách khắc phục là thêm phần sau (hiển thị ở định dạng tệp diff để hiển thị bối cảnh xung quanh các phần bổ sung - chỉ cần thêm vào các dòng có dấu + nơi chúng cần đến):
Trong ứng dụng / mã / lõi / Mage / Cms / Block / Block.php ở dòng 72:
}
return $html;
}
+
+ /**
+ * Retrieve values of properties that unambiguously identify unique content
+ *
+ * @return array
+ */
+ public function getCacheKeyInfo()
+ {
+ $blockId = $this->getBlockId();
+ if ($blockId) {
+ $result = array(
+ $blockId,
+ Mage::app()->getStore()->getCode(),
+ );
+ } else {
+ $result = parent::getCacheKeyInfo();
+ }
+ return $result;
+ }
}
Trong ứng dụng / mã / lõi / Mage / Cms / Block / Widget / Block.php ở dòng 82:
$helper = Mage::helper('cms');
$processor = $helper->getBlockTemplateProcessor();
$this->setText($processor->filter($block->getContent()));
+ $this->addModelTags($block);
}
}
unset(self::$_widgetUsageMap[$blockHash]);
return $this;
}
+
+ /**
+ * Retrieve values of properties that unambiguously identify unique content
+ *
+ * @return array
+ */
+ public function getCacheKeyInfo()
+ {
+ $result = parent::getCacheKeyInfo();
+ $blockId = $this->getBlockId();
+ if ($blockId) {
+ $result[] = $blockId;
+ }
+ return $result;
+ }
}
Tôi sẽ không nghĩ mình là người duy nhất nhìn thấy vấn đề này và nếu nó xuất hiện trong CE 1.9.2, hy vọng điều này sẽ giúp giải quyết vấn đề này cho một số người.