通過看源碼之後發現,這個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/