Magento刷新缓存插件保存

时间:2012-03-06 17:15:04

标签: php zend-framework magento

我编写了一个简单的Magento插件,它只列出了从给定父ID启用的所有子类别。

用户只需使用我创建的插件选项卡从管理员中选择父类别ID。

为了加快速度,我使用以下代码

为块插件添加了块缓存
 $this->addData(array(
            'cache_lifetime' => 86400,
            'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG)
        ));

到目前为止效果很好,就像启用/禁用子类别一样,缓存无效并被替换。但是,如果我更改了管理员中的父类别ID,则在使用system-> cache managment刷新整个块缓存之前,不会看到更改。

我想要做的是有一种方法,当用户点击管理员中的保存时,只刷新一个块而不是刷新所有内容。

我该如何解决这个问题?我正在考虑在adminhtml中保存事件的某种事件观察者?但是我不知道该怎么做。

我对其他人可能有的建议感兴趣。

非常感谢

Ian Cassidy

2 个答案:

答案 0 :(得分:3)

您可以使用事件观察器清除缓存。您可以按this tutorial设置观察者,然后观察catalog_category_save_after事件。

要清除缓存,请在观察者模型中使用Mage::app()->getCacheInstance()->cleanType(Mage_Catalog_Model_Category::CACHE_TAG);

PS:也许您必须将<events>设置为<admin><adminhtml>而不是<globals>

答案 1 :(得分:0)

在缓存管理中单击刷新操作时,可以使用observer generate。之后,您可以按缓存标记或缓存ID清除缓存。这是通过缓存ID清除缓存的解决方案。你能看到how to refresh cache in custom cache type

吗?