繁体   English   中英

在Magento阻止HTML缓存中保存Ajax响应

[英]Save Ajax response in Magento block html cache

对于这个特定的Magento EE网站,我有一个控制器,该控制器创建一个块并通过Ajax返回它。

$this->loadLayout();
$block = $this->getLayout()->createBlock('catalog/product_list_related','catalog.product.related')->setTemplate(...
$this->getResponse()->setBody($block->toHtml());

很简单。 我想使用键SKU-客户组-DATE来缓存响应。 我将适当的方法放在用于设置键,标签和生存期的代码块中。 都好。

但是,没有任何内容保存到缓存中。

由于这是一个EE网站,因此我认为Enterprise_PageCache占位符会阻止它。 但是即使删除了这些内容,它也无法保存。

我一直在研究app / code / core / Mage / Core / Block / Abstract.php以查看发生了什么。 但是我以为我会检查是否有任何已知的“陷阱”,它会在控制器中缓存由createBlock设置的块。

谢谢! 威尔逊

简单但棘手。

首先,您应该通过xml插入块(它与缓存更好地配合使用)。

其次,您只需要在块文件中插入一小段这样的代码即可(例如:/fishpig/wordpress/block/post/post.php)

public function __construct(){
    parent::__construct();
    $this->addData(array(
        'cache_lifetime' => 86400, // lifetime on second
        'cache_tags'     => array(Mage_Core_Model_Store::CACHE_TAG, Mage_Cms_Model_Block::CACHE_TAG), // cache tag
        'cache_key'      => 'Fishpig_Wordpress_Block_Post_List_'.$this->getRequest()->getRequestUri() // cache unique ID IT MUST BE UNIQUE, MUST BE UNIQUE, MUST BE UNIQUE, MUST BE UNIQUE, MUST BE UNIQUE, MUST BE UNIQUE, MUST BE UNIQUE
    ));
}

如果您需要有关该代码的任何帮助,我也许可以为您提供帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM