打孔Mage\u目录\u块\u产品\u Magento EE FPC价格

打孔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')中使

我花了很长时间来计算代码/参数,以便在magento中为Mage_Catalog_Block_Product_Price Block打孔整个页面缓存。我可以获得第一次加载页面时显示的价格,但是当缓存id是唯一的时,它不能正确地呈现价格(当它应该被缓存时,它会正确地缓存它)。我知道我需要发送它的参数,例如product_id等,但不清楚需要从getCacheKeyInfo向缓存容器发送什么(例如'xx'),以便在$this->\u placeholder->getAttribute('xx')中使用。以及需要准备什么并从_renderView()发送到价格布局/视图

到目前为止,我已经成功地完成了以下工作(它们各自输出测试数据)

  • 在我的模块/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)