2011-09-20 84 views
2

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

我想这基于什么是在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的值)。

回答

2

所以它看起来像清除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 
); 

其中$类是Mage_Catalog_Model_Category实例

+0

虽然这是最终的“修复”。我仍然希望能够清除FPC的单一类别,而不是清除所有的FPC。 –

+0

你有没有找到这方面的解决方案?我也看起来一样。我需要清除FPC特定产品的缓存。如果你遇到任何解决方案,请帮助我。谢谢。 – Elavarasan

0

的标签必须准确:

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

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

祝你好运,快乐黑客!