禁用magento中某些文件的缓存

时间:2012-05-08 13:16:32

标签: magento

我要求我要在产品详情页面和产品视图页面上禁用某些类别的缓存 我已经搜索了这个,但我没有找到任何相关的答案,这可能在magento吗? 我试过list.phtml和view.phtml文件

1 个答案:

答案 0 :(得分:0)

您可以覆盖该块并设置一个非常低或错误的cache_lifetime。

例如,您可以将块复制到本地名称空间。例如,如果要在导航块上禁用缓存,则可以复制

app\code\core\Mage\Catalog\Block\Navigation.php

app\code\local\Mage\Catalog\Block\Navigation.php

这将覆盖Magento块,并允许您使用我们的更改进行更新。

然后,您可以更改此块或大多数其他块的缓存机制以满足您的需要。下面是禁用此块的缓存的示例。

protected function _construct()
{
    $this->addData(array(
        'cache_lifetime'    => false, // or 1 or something tiny
    ));
}

或者,添加如下内容:

public function getCacheLifetime() 
{ 
    return null; // or 1 or what ever.. 
} 

您还可以在存储页面时更改用作唯一标识符的缓存“密钥”,这是模板块的默认缓存键:

/**
 * Get cache key informative items
 *
 * @return array
 */
public function getCacheKeyInfo()
{
    return array(
        'BLOCK_TPL',
        Mage::app()->getStore()->getCode(),
        $this->getTemplateFile(),
        'template' => $this->getTemplate()
    );
}

组合数组中的每个元素以创建生成缓存时使用的唯一键,根据您的要求进行更改可能会有所帮助。 正如您在上面看到的那样,商店代码就在那里,这意味着缓存将记录商店的商店前端/语言,以及每个语言/商店前端,因为它是自己的缓存页面。

根据您使用的块,您可以添加额外的参数,以使缓存或多或少成为目标。