簡體   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