我花了很长时间找出代码/参数来为Mage_Catalog_Block_Product_Price块在magento中打孔全页缓存。我可以在第一次加载页面时显示价格,但是当缓存 id 是唯一的时,它不会正确呈现价格(当它应该被缓存时,它会正确缓存它)。我知道我需要向其发送参数,例如 Product_id 等,但不清楚需要从 getCacheKeyInfo 发送到缓存容器中的内容(例如“xx”)以便在 $this->_placeholder->getAttribute('xx' 中使用)。以及需要准备什么并从 _renderView() 发送到价格布局/视图。
到目前为止我已经成功完成了以下操作(它们各自输出测试数据)
- 在我的模块 /etc 文件夹中创建了cache.xml
- 创建缓存容器模型并验证工作(只需设置)
- 将 Mage_Catalog_Block_Product_Price 重写/扩展到我自己的模型中以添加 getCacheKeyInfo()
所以问题是,我已经尝试了容器模型的 _getCacheId() 和 _renderBlock() 与 getCacheKeyInfo() 结合的许多变体,如上所述。但我遇到了绊脚石。如果有人能引导我走向正确的方向,我将不胜感激。
我也一直在努力解决全页缓存问题。
这些是我的发现,对我非常有帮助。
请看一下:app/code/core/Enterprise/PageCache/Model/Processor/Default.php
Line 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”来避免缓存。
例子:
http://magentourl.com/catelog/category/view/id/123?___store
Mage::getUrl('catalog/category/view', array('id' => 123, 'query' => array('___store' => '')))
会话变量:
您还可以通过设置(临时)会话变量来避免整页缓存:
Mage::getSingleton('core/session')->setNoCacheFlag(true)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)