2

在这个 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 函数,但是在哪里以及如何?

4

3 回答 3

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
   }
}
于 2014-10-31T09:40:40.837 回答
1

在清除缓存时检查事件application_clean_cacheMage::app()->cleanCache(); - 或系统保存产品等时...

并查看事件 - 通过管理面板清除缓存时的adminhtml_cache_refresh_type

以及您在观察者中的代码

Mage::app()->getCache()->clean('all', array('my_tag'));

并且需要为 Observer 添加一些逻辑,以检查是否需要刷新缓存

于 2015-05-07T13:09:48.587 回答
0

你说的触发是什么意思?您如何将内容写入这个新缓存?

Mage::app()->saveCache($data, $cacheKey, $this->getCacheTags(), $this->getCacheLifetime());

并且缓存标签用于删除

于 2013-02-23T14:05:24.790 回答