gpt4 book ai didi

magento - Magento EE FPC打洞法师_产品目录_Block_产品_价格

转载 作者:行者123 更新时间:2023-12-04 21:20:27 26 4
gpt4 key购买 nike

我花了很长时间弄清楚代码/参数以在 magento 中为 Mage_Catalog_Block_Product_Price block 打洞。我可以在第一次加载页面时显示价格,但是当缓存 id 是唯一的时,它不会正确呈现价格(当它应该被缓存时它会正确缓存它)。我知道我需要向它发送参数,例如 product_id 等,但不清楚需要从 getCacheKeyInfo 将什么(例如'xx')发送到缓存容器中以在 $this->_placeholder->getAttribute('xx' 中使用)。以及需要准备什么并将其从 _renderView() 发送到价格布局/ View 。

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

  • 在我的模块/etc 文件夹中创建了 cache.xml
  • 创建缓存容器模型并验证工作(只需要设置)
  • 将 Mage_Catalog_Block_Product_Price 重写/扩展为我自己的模型以添加 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' 来避免缓存。
    例子:
    http://magentourl.com/catelog/category/view/id/123?___store

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

    session 变量:
    您还可以通过设置(临时) session 变量来避免整页缓存:
    Mage::getSingleton('core/session')->setNoCacheFlag(true)

    关于magento - Magento EE FPC打洞法师_产品目录_Block_产品_价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12948235/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com