magento使用产品ID以编程方式清除特定产品的缓存

时间:2015-01-06 04:45:43

标签: magento caching

正如我的问题所示,我想使用产品ID删除特定产品的缓存(FULL PAGE CACHE)。这可能吗?

1 个答案:

答案 0 :(得分:0)

每个模型都有cleanModelCache()方法,该方法使用模型标记清理缓存。

请参阅Mage_Catalog_Model_Product :: cleanModelCache()

public function cleanModelCache()
    {
        $tags = $this->getCacheIdTagsWithCategories();
        if ($tags !== false) {
            Mage::app()->cleanCache($tags);
        }
        return $this;
    }

Mage::app()->cleanCache($tags);清除缓存。

如果您只想使用产品ID进行清理,则至少需要加载与该产品相关联的类别,并为方法Mage_Catalog_Model_Product::getCacheIdTagsWithCategories()构建cacha标记列表

public function getCacheIdTagsWithCategories()
    {
        $tags = $this->getCacheTags();
        $affectedCategoryIds = $this->_getResource()->getCategoryIdsWithAnchors($this);
        foreach ($affectedCategoryIds as $categoryId) {
            $tags[] = Mage_Catalog_Model_Category::CACHE_TAG.'_'.$categoryId;
        }
        return $tags;
    }