【发布时间】:2014-05-30 22:34:20
【问题描述】:
对于这个特定的 Magento EE 站点,我有一个控制器,它创建一个块并通过 Ajax 返回它。
$this->loadLayout();
$block = $this->getLayout()->createBlock('catalog/product_list_related','catalog.product.related')->setTemplate(...
$this->getResponse()->setBody($block->toHtml());
足够简单。我想缓存响应,键为 SKU - 客户组 - 日期。我已经在块中放置了适当的方法来设置键、标签和生命周期。都很好。
但是,没有任何内容保存到缓存中。
我认为,由于它是一个 EE 站点,Enterprise_PageCache 占位符会阻止它。但即使删除了这些,也没有保存。
我一直在挖掘 app/code/core/Mage/Core/Block/Abstract.php 以查看发生了什么。但我想我会检查是否有任何已知的“陷阱”缓存由控制器中的 createBlock 设置的块。
谢谢! 威尔逊
【问题讨论】:
-
出于某种原因,在 Mage::app 的 $this->_cache _allowedCacheOptions 数组中,'block_html' 设置为 false。所以它为 'canUse()' 缓存返回 false。
-
原来是 Enterprise_PageCache 使“block_html”缓存失效