我正忙着搞清楚Mage_Catalog_Block_Product_Price块的magento中的整页缓存的代码/参数。我可以在第一次加载页面时显示价格,但是当缓存ID是唯一的时,它不能正确地呈现价格(当它应该被缓存时它会正确地缓存它)。我知道我需要发送它的参数,例如product_id等,但不清楚需要从getCacheKeyInfo发送到缓存容器中的内容(例如'xx')以用于$ this-> _placeholder-> getAttribute(' XX')。还需要准备和从_renderView()发送到价格布局/视图。
到目前为止,我已成功完成以下任务(他们各自输出测试数据)
所以问题是我在容器模型的_getCacheId()和_renderBlock()中结合getCacheKeyInfo()尝试了很多变化,如上所述。但我遇到了绊脚石。如果有人能引导我朝着正确的方向前进,我们将不胜感激。
答案 0 :(得分:2)
我一直在努力使用全页缓存。
这些是我的发现,对我很有帮助。
请查看: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'来避免缓存。
例如:
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)