在此Stackoverflow问题中,答案显示了如何添加自定义缓存状态:Magento Custom Caching with admin switch
现在我的问题是:这是在哪里触发的?
更新 我按照上面提到的步骤进行了操作。现在我在Abstract / Service.php
中有这个代码final class COMP_NAME_Abstract_Service
{
static private $_instance;
private $_licenseHelpers = array();
public function clearCache( $custom = false )
{
//DO SOMETHING
}
public function getCache()
{
//DO SOMETHING
}
}
但是我必须在某个地方'调用'clearCache函数,但是在哪里以及如何?
答案 0 :(得分:2)
您可以使用活动adminhtml_cache_refresh_type
。
添加到全局的事件部分。
<global>
<events>
<adminhtml_cache_refresh_type>
<observers>
<module_alias>
<class>COMPNAME_MODULENAME_Model_Observer</class>
<type>singleton</type>
<method>cleanCacheType</method>
</module_alias>
</observers>
</adminhtml_cache_refresh_type>
</events>
</global>
将此代码添加到观察者COMP_NAME_module_name_Model_Observer
:
public function cleanCacheType(Varien_Event_Observer $observer)
{
if ($observer->getData('type') == "your_cache_type"){
//CUSTOM CODE
}
}
答案 1 :(得分:1)
检查事件 application_clean_cache
当清除缓存时 - Mage::app()->cleanCache();
或当系统保存产品等时......
并查看活动 - adminhtml_cache_refresh_type 通过管理面板清除缓存时
以及您在观察者中的代码
Mage::app()->getCache()->clean('all', array('my_tag'));
并且需要向Observer添加一些逻辑, 检查是否需要刷新缓存
答案 2 :(得分:0)
您对triggerd的意思是什么?你如何在这个新的缓存中写东西?
Mage::app()->saveCache($data, $cacheKey, $this->getCacheTags(), $this->getCacheLifetime());
并且缓存标记用于删除