打孔Mage\u目录\u块\u产品\u Magento EE FPC价格
我花了很长时间来计算代码/参数,以便在magento中为Mage_Catalog_Block_Product_Price Block打孔整个页面缓存。我可以获得第一次加载页面时显示的价格,但是当缓存id是唯一的时,它不能正确地呈现价格(当它应该被缓存时,它会正确地缓存它)。我知道我需要发送它的参数,例如product_id等,但不清楚需要从getCacheKeyInfo向缓存容器发送什么(例如'xx'),以便在$this->\u placeholder->getAttribute('xx')中使用。以及需要准备什么并从_renderView()发送到价格布局/视图 到目前为止,我已经成功地完成了以下工作(它们各自输出测试数据)打孔Mage\u目录\u块\u产品\u Magento EE FPC价格,magento,Magento,我花了很长时间来计算代码/参数,以便在magento中为Mage_Catalog_Block_Product_Price Block打孔整个页面缓存。我可以获得第一次加载页面时显示的价格,但是当缓存id是唯一的时,它不能正确地呈现价格(当它应该被缓存时,它会正确地缓存它)。我知道我需要发送它的参数,例如product_id等,但不清楚需要从getCacheKeyInfo向缓存容器发送什么(例如'xx'),以便在$this->\u placeholder->getAttribute('xx')中使
- 在我的模块/etc文件夹中创建cache.xml
- 创建缓存容器模型并验证工作(只需设置)
- 在我自己的模型中重写/扩展Mage_目录_块_产品_价格,以添加getCacheKeyInfo()
所以问题是,我尝试了容器模型的_getCacheId()和_renderBlock()以及getCacheKeyInfo()中的许多变体,如上所述。但我遇到了一个绊脚石。如果有人能给我指引正确的方向,我将不胜感激。我也一直在努力解决整页缓存问题
这些是我的发现,对我很有帮助 请看一下:
app/code/core/Enterprise/PageCache/Model/Processor/Default.php
第47行
/**
* Check if request can be cached
*
* @param Zend_Controller_Request_Http $request
* @return bool
*/
public function allowCache(Zend_Controller_Request_Http $request)
{
foreach ($this->_noCacheGetParams as $param) {
if (!is_null($request->getParam($param, null))) {
return false;
}
}
if (Mage::getSingleton('core/session')->getNoCacheFlag()) {
return false;
}
return true;
}
查看此函数,似乎有两种方法可以避免(禁用)整页缓存:
获取参数:可以使用前缀为三个下划线的参数“store”或“from_store”来避免缓存。 例如: 会话变量:
您还可以通过设置(临时)会话变量来避免整页缓存:
Mage::getSingleton('core/session')->setNoCacheFlag(true)
还有这个问题吗?你一开始就没有试过块重写吗?
Mage::getSingleton('core/session')->setNoCacheFlag(true)