好的,所以我最近一直在研究 magento 中的块缓存。看起来是加速页面渲染的一种非常好的方法,但它看起来也有点让人头疼。
例如,缓存类别块似乎需要大量的操作才能正确完成。此外,有很多核心块可能不使用块缓存。在这些情况下,开发人员是否必须创建一个模块,然后重写所有这些核心块,以便在它们上启用块缓存?
对于这个主题的新手,是否还有其他关于阻止缓存的提示?
好的,所以我最近一直在研究 magento 中的块缓存。看起来是加速页面渲染的一种非常好的方法,但它看起来也有点让人头疼。
例如,缓存类别块似乎需要大量的操作才能正确完成。此外,有很多核心块可能不使用块缓存。在这些情况下,开发人员是否必须创建一个模块,然后重写所有这些核心块,以便在它们上启用块缓存?
对于这个主题的新手,是否还有其他关于阻止缓存的提示?
块缓存(在大多数情况下)不需要在 PHP 级别实现,它可以在 XML 中完成。要为已经存在的块启用缓存,您需要打开<reference />
块,然后使用<action />
调用设置适当的数据,如下所示:
<reference name="myblock">
<action method="setCacheLifetime"><seconds>1800</seconds></action>
<action method="setCacheKey"><key>my-unique-cache-key</key></action>
</reference>
如果您愿意,可以在 PHP 中完成块缓存。缓存管理必须写在Block的构造函数中
https://magento2.atlassian.net/wiki/display/m1wiki/How+to+use+HTML+output+cache+in+Magento+1.x
protected function _construct() {
$this->addData(array(
'cache_lifetime' => 3600,
'cache_tags' => array(Mage_Catalog_Model_Product::CACHE_TAG),
'cache_key' => $this->getProduct()->getId(),
));
}