【问题标题】:Magento - Clear cache on a single categoryMagento - 清除单个类别的缓存
【发布时间】:2011-11-20 18:44:27
【问题描述】:

如何清除单个类别的缓存?开启 FPC(全页缓存),关闭显示缺货商品,商品售罄时,分类页面仍然显示商品(没有“缺货”消息)。当用户点击该页面时,该产品仍列为有货。我添加了一个观察者来清除产品上的缓存,这已经解决了产品页面。但是,我似乎无法清除类别页面的缓存。到目前为止,这是我尝试过的:

我根据 Mage_Catalog_Model_Category::move 方法中的内容进行了尝试:

Mage::app()->cleanCache(array(Mage_Catalog_Model_Category::CACHE_TAG));

但这看起来应该清除 所有 类别的缓存(当我使用它时似乎不起作用)。我想要一些可以让我清除 category_id=123 的缓存的东西。

我也试过了:

Mage::app()->cleanCache('catalog_category'.$category_id);

但这似乎也没有任何作用(注意 'catelog_category' 是 Mage_Catalog_Model_Category::CACHE_TAG 的值)。

【问题讨论】:

    标签: caching magento


    【解决方案1】:

    所以看起来要清除你必须使用的FPC:

    Mage::app()->getCacheInstance()->cleanType('full_page');
    

    但这会刷新所有 FPC。我的最终解决方案要求我清除 FPC 使用以下方法重新索引类别:

    Mage::getSingleton('index/indexer')->processEntityAction(
        $category, Mage_Catalog_Model_Category::ENTITY, 
            Mage_Index_Model_Event::TYPE_SAVE
    );
    

    其中 $category 是 Mage_Catalog_Model_Category 实例

    【讨论】:

    • 虽然这是最终的“修复”。我仍然希望能够清除单个类别的 FPC,而不是清除所有 FPC。
    • 您找到解决方案了吗?我也在找一样的。我需要从 FPC 清除特定产品的缓存。如果您遇到任何解决方案,请帮助我。谢谢。
    【解决方案2】:

    标签需要精确:

    Mage::app()->cleanCache(array(Mage_Catalog_Model_Category::CACHE_TAG.'_1234'));

    您可以在缓存系统中查找它或使用文件系统缓存并打开 /var/cache/ 中的元文件。

    祝你好运,黑客愉快!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      相关资源
      最近更新 更多