我尝试缓存显示菜单的块(例如来自Cmssmart_megamenu的模块).
以前的版本是:
<block type="megamenu/navigation" name="catalog.topnav.megamenu">
<action method="unsetData"><key>cache_lifetime</key></action>
<action method="unsetData"><key>cache_tags</key></action>
</block>
Run Code Online (Sandbox Code Playgroud)
所以作者明确地禁用了缓存.我删除了2 unsetData,并在Cmsmart_Megamenu_Block_Navigation类中添加了_construct()方法.
class Cmsmart_Megamenu_Block_Navigation extends Mage_Catalog_Block_Navigation
{
protected function _construct()
$this->addData(array(
'cache_lifetime' => 86400,
'cache_key' => "my_key_mega_menu",
'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG, Mage_Cms_Model_Block::CACHE_TAG)
));
Run Code Online (Sandbox Code Playgroud)
听起来它有效,我可以看到缓存文件:mage --- 8ea_MY_KEY_MEGA_MENU.在var/cache中.但是,它会在一分钟后从缓存中消失.实际上,一旦下一个cron启动(每隔mn安排一次)
我使用了Aoe-template_hint,我可以看到这个块的绿色框,这意味着它被缓存,生命周期也正确设置为86400,所以有什么不对?
这是我的第一次尝试,你觉得这里有什么不对?是否有其他规则而不是文件的持续时间到期?也许与另一个块的隐藏链接会更快到期?不到1毫米的缓存是奇怪的...
注意:我在Windows或Linux上有相同的问题,有或没有Redis
谢谢