Magento2 直接把Block轉換以Ajax方式渲染,迴避Full Page Cache問題
在Magento2大部分的頁面都有Full Page Cache,舉凡像是prodcut、category、cms頁都有使用,讓使用者在下次近入頁面時間提升,但是這對於說想在頁面上想根據不同使用者所呈現不同內容來說是非常惱人的,雖然可以使用cacheable="false"來避免但是這樣便會完全失去Full Page Cache功能,於是剩下的辦法便是使用AJAX拿回沒有Cache的資料進行渲染,但是對於每次都寫一隻AJAX與API的方式來說並不是怎麼的有效率,這邊將提供一個簡單的方法將你的Block轉換為上述方式,只需一個簡單的參數,省下更多的時間。
範例程式碼:
只要加上 $this->_isScopePrivate = true
<?php namespace AstralWeb\Test\Block; class Test extends \Magento\Framework\View\Element\Template { public function __construct( \Magento\Framework\View\Element\Template\Context $context, array $data = [] ) { parent::__construct($context, $data); $this->_isScopePrivate = true; } }
可以使用檢視原始碼查看你會發現
<!-- BLOCK astralweb_test_index > 你的內容 <!-- /BLOCK astralweb_test_index -->
如果有興趣是如何實現的,可以在Magento\PageCache\Observer\ProcessLayoutRenderElement找到
是不是很簡單呢~只需一個簡單的參數完成一堆惱人的開發,避開煩人的Full Page Cache,省下更多的開發時間。
想知道更多Magento相關實用知識,請記得訂閱我們的電子報,以及追蹤歐斯瑞的臉書粉絲團及IG,就能收到第一手的最新資訊喔!有任何問題,歡迎隨時與我們聯繫~
我要留言