'Blocks HTML' Cache Types are invalidated

升级magento到1.5之后,后台Cache Storage Management那里好像出现了一点小问题,基本上每次将Blocks HTML output改为enabled之后,第二天又会是invalidated(我这里因为cron每天都会执行catalogrule),或者每次在后台任意点开某个product,然后再save,Blocks HTML output也会从enabled变为invalidated,google了一下,很多人好像都遇到了这个问题,类似于One or more of the Cache Types are invalidated: Blocks HTML output. Click here to go to Cache Management and refresh cache types.这样的提示。

通过看源码之后发现,这个bug似乎又不像是个bug,为什么呢?看catalogrule的config.xml,里面有段
        <catalogrule>
            <related_cache_types>
                <block_html/>
            </related_cache_types>
        </catalogrule>

我们发现,和catalogrule关联的cache块是block_html,我说的cache块是指进后台Cache Storage Management,Associated Tags对应的值,只不过后台是大写的。

当我们进入后台product编辑页,即便什么也不做,点save,经过层层触发,会进入CatalogRule/Model/Rule.php,看function applyAllRulesToProduct,有$this->_invalidateCache()这么一句,再进入function _invalidateCache,code如下:
    protected function _invalidateCache()
    {
        $types = Mage::getConfig()->getNode(self::XML_NODE_RELATED_CACHE);
        if ($types) {
            $types = $types->asArray();
            Mage::app()->getCacheInstance()->invalidateType(array_keys($types));
        }
        return $this;
    }

$types = Mage::getConfig()->getNode(self::XML_NODE_RELATED_CACHE)这一句替换完宏就是
$types = Mage::getConfig()->getNode('global/catalogrule/related_cache_types'),看最上面的config.xml,$types最终得到的值是block_html,所以下面的invalidateType就将block_html设为了invalidated。

这里我也很迷惑,不知道magento的用意是什么?貌似1.4版本不会出现这个问题。
相关解决方法及讨论 http://www.magentocommerce.com/boards/viewthread/219407/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值