【问题标题】:Disable caching for some files in magento禁用magento中某些文件的缓存
【发布时间】:2012-11-23 17:48:26
【问题描述】:

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

【问题讨论】:

  • 您是指整个页面,还是只是页面的某些部分?比如分类页面的list.phtml部分?
  • 不,我只想缓存 list.phtml 文件,这个链接对我不起作用
  • 我链接的问题是关于整个页面和块级缓存的。试试那个问题链接到的oggettoweb.com/blog/…

标签: magento


【解决方案1】:

您可以覆盖该块并设置一个非常低或错误的 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.. 
} 

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

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

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

根据您使用的块,您可以添加额外的参数以使缓存或多或少有针对性。

【讨论】:

  • Andrew,您能告诉我在哪里进行这些更改吗?谢谢。
  • 感谢 Andrew,由于“阻止 HTML 输出”缓存,我的导航遇到了问题。我使用的是 Magento 企业版。您可以在此链接“magentocommerce.com/boards/viewthread/298493”上查看我的问题
  • 您可以肯定;您可以使用我在此处提到的内容来帮助解决该问题。
  • 'cache_lifetime' => false 实际上会将缓存生命周期恢复到 7200 秒!
猜你喜欢
  • 2011-11-16
  • 1970-01-01
  • 2010-10-18
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多