在Magento EE FPC打孔Mage_Catalog_Block_Product_Price(

2019-08-01 14:53发布

我在的时间搞清楚的代码/参数的赫克打孔的整页缓存在Magento为Mage_Catalog_Block_Product_Price块。 我能得到的价格显示第一次加载页面时,但是当缓存ID是唯一的,它无法正常渲染价格(它缓存它正确时,它应该被缓存)。 我知道我需要把它的参数,如PRODUCT_ID等,而是需要从getCacheKeyInfo发送到缓存容器使用$什么(例如,“XX”)并不清楚这一点 - > _ placeholder->的getAttribute(“XX” )。 而需要准备和_renderView()发送到价格布局/查看的内容。

到目前为止,我已经做了成功以下(他们每个输出测试数据)

  • 创建cache.xml在我的模块/ etc文件夹
  • 创建缓存容器模型和验证工作(只需要设置)
  • 重写了/延长Mage_Catalog_Block_Product_Price到我自己的模型添加getCacheKeyInfo()

所以,问题是,我在组合试过许多变化在容器模型的_getCacheId()和_renderBlock()内与所述getCacheKeyInfo(),像如上所述。 但我打的绊脚石。 如果任何人都可以引导我正确的方向,这将不胜感激。

Answer 1:

我已经有了完整的页面缓存努力为好。
这是我的发现,并已对我很有帮助。

请看看: 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;
}

看着这个功能似乎有回避(禁用)全页面缓存的方法有两种:

GET参数:
您可以使用参数“商店”或三个下划线前缀“from_store”,以避免缓存。 例:

http://magentourl.com/catelog/category/view/id/123?___store

Mage::getUrl('catalog/category/view', array('id' => 123, 'query' => array('___store' => '')))

Session变量:
你也可以通过设置(临时)会话变量避免全页缓存:

Mage::getSingleton('core/session')->setNoCacheFlag(true)


文章来源: Hole punching Mage_Catalog_Block_Product_Price in Magento EE FPC
标签: magento