gpt4 book ai didi

magento - 禁用特定 block 的整页缓存

转载 作者:行者123 更新时间:2023-12-01 10:53:21 26 4
gpt4 key购买 nike

我正在使用具有整页缓存功能的 magento EE。有一个动态更新的 block ,但我似乎无法禁用它的缓存。我想要理想地实现的目标是:仅针对特定 block 禁用缓存,以便每次加载页面时都会再次呈现它。我尝试过的事情:

将 unsetData 包含到布局文件中

<action method="unsetData"><key>cache_lifetime</key></action>
<action method="unsetData"><key>cache_tags</key></action>

设置函数_saveCache 返回false

protected function _saveCache($data, $id, $tags = array(), $lifetime = null) {
return false;
}

cache_lifetime设置不同的值

public function __construct()
{
$this->addData(array(
‘cache_lifetime’ => 0,
‘cache_tags’ => array(Mage_Catalog_Model_Product::CACHE_TAG),

));
}

也许我在整页缓存机制中遗漏了什么?

最佳答案

好吧,我找到了一些不错的帖子并使用 etc/cache.xml 实现了我的缓存,它用容器对象包装了我的 block 。

我的cache.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config>
<placeholders>
<namespace_block_unique_node>
<block>module/block_class</block>
<name>name_of_block_in_my_layout</name>
<template>path/to/my/template</template>
<placeholder>UNIQUE_PLACEHOLDER_HERE</placeholder>
<container>Namespace_Module_Model_Caching_Container_BlockName</container>
<cache_lifetime>86400</cache_lifetime>
</namespace_block_unique_node>
</placeholders>
</config>

我在这里将不应该被缓存的 block 用作 block,用作我布局中 block 的 name 名称,用作 container 我'选择我的容器。

容器代码:

<?php

class Namespace_Module_Model_Caching_Container_BlockName extends Enterprise_PageCache_Model_Container_Abstract
{

protected function _getCacheId()
{
return 'NAMESPACE_MODULE_BLOCKNAME' . $this->_getIdentifier();
}

protected function _getIdentifier()
{
return microtime();
}

protected function _renderBlock()
{
$blockClass = $this->_placeholder->getAttribute('block');
$template = $this->_placeholder->getAttribute('template');
$block = new $blockClass;
$block->setTemplate($template);
$layout = Mage::app()->getLayout();
$block->setLayout($layout);
return $block->toHtml();

}

protected function _saveCache($data, $id, $tags = array(), $lifetime = null) { return false;}
}

我在这里放置了microtime()函数来识别 block ,但在我的模块中我使用了与我的模块相关的cookie变量。我相信当没有真正改变时,这可以节省 block 的冗余重新加载。

我在其他教程中没有发现的是我必须创建布局变量并将其分配给我的 block ,否则我只会得到我的 block 而不是整个页面。

关于magento - 禁用特定 block 的整页缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16852167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com