我尝试缓存显示菜单的块(例如来自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
谢谢
经过更多调查,我找到了为什么我的块的缓存被删除。
我搜索了对清理缓存的方法的调用,发现这是由于一个模块实际上通过执行以下操作显式删除了每个 cron 上的所有缓存块:
Mage::app()->getCacheInstance()->cleanType('block_html');
Run Code Online (Sandbox Code Playgroud)
我把线去掉了,现在一切顺利!该模块是 async_index
| 归档时间: |
|
| 查看次数: |
361 次 |
| 最近记录: |