gpt4 book ai didi

magento - 如何实现购物车 block 的magento缓存打洞

转载 作者:行者123 更新时间:2023-12-04 05:19:07 25 4
gpt4 key购买 nike

我使用的是 Magento EE 1.12 版并启用了全页缓存

a) 我的产品详细信息页面被缓存
b) 因此,我在此页面中的购物车没有显示动态商品数量
c) 所以我无法在我的产品详细信息页面中显示有效的购物车项目数

我遵循的步骤

1)我创建了一个块并从 header.phtml 调用
2) 试图使 topcart.phtml 块不被缓存

作为 magento 的新手,我得到了一些缓存打洞链接

我按照以下链接操作但没有成功

我的文件结构

应用程序-代码-本地-企业-PageCache->etc-cache.xml

和 PageCache - 模型 - 容器 - TopCart.php

代码如下图

help link one

help link two

link three

我创建了文件
cache.xml 和cart.php 容器文件

 <page_html_topcart>
<block>page/html_topcart</block>
<name>topcart</name>
<placeholder>PAGE_HTML_HEADER_CART</placeholder>
<container>Enterprise_PageCache_Model_Container_TopCart</container>
<cache_lifetime>36400</cache_lifetime>
</page_html_topcart>

这是我的 topcart.php 容器文件看起来像
  protected function _getIdentifier()
{
$cacheId = $this->_getCookieValue(Enterprise_PageCache_Model_Cookie::COOKIE_CUSTOMER, '')
. '_'
. $this->_getCookieValue(Enterprise_PageCache_Model_Cookie::COOKIE_CUSTOMER_LOGGED_IN, '');

return $cacheId;
}

protected function _getCacheId()
{
return 'CONTAINER_TOPCART_' . md5($this->_placeholder->getAttribute('cache_id') . $this->_getIdentifier());
}

protected function _renderBlock()
{
$block = $this->_getPlaceHolderBlock(); //('page/html_header_cart');
Mage::dispatchEvent('render_block', array('block' => $block, 'placeholder' => $this->_placeholder));
return $block->toHtml();
}

请帮助我提供有用的链接和步骤

最佳答案

我遇到了同样的问题。所以,我认为,问题是,在这种情况下我们没有可缓存的模板。因此,如果您按照您的方式缓存它(我也是这样做的),您最终会在缓存文件中得到一个 base64 编码的链接列表。为了验证这一点,我解压缩了 var/full_page_cache 中的文件 - 我们开始了:购物车计数被缓存,即使您的购物车发生变化也不会改变,并且它在服务器端不可替换(至少不是在清洁方式)。

这种行为的原因很简单:对于 FPC,您只渲染模板,传递一些值。但是模板只在这种特殊情况下呈现一个列表,只访问一个块方法(getLinks)。在您的布局 xml 文件中,您会发现一些“addLink”调用,它提供该块,这就是为什么所有结果都变成 base64 编码并最终出现在您的缓存文件中。您的容器无法访问它们。

但我认为,有办法解决这个问题。只需收集您想要呈现的链接并为此创建自定义模板和自定义块。您现在可以以适当的方式缓存它。

关于magento - 如何实现购物车 block 的magento缓存打洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13876929/

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