Magento 2 Controller and FPC

Magento 2 自带 Full page cache 。当我的 Controller 需要返回动态的信息时,如果 FPC 开着,那么我只能得到缓存的信息。所以问题是,怎样让 Controller 排除掉 FPC 的影响而返回动态信息呢?

通过 layout xml 的 disable 来禁止某个 block 缓存。

像这样:

<block class="\Magento\Framework\View\Element\Template" template="sample:module::sampletemplate.phtml" name="sampleblock" cacheable="false" />

cacheable=”false” 就会禁用整个 block 的缓存,但是这会对性能造成影响,这个 block 所在的页面都不会被缓存。

这里不讨论性能问题,相关阅读中可以找到更多这方面的讨论。

在博主的实践中,有一个错误的做法,下面记录下来。
在 controller 中我没有通过 layout xml 来创建页面,而是直接创建了 block 。这样,当我希望该 block 返回动态的内容时,我无法找到与 cacheable=”false” 相对应的代码来避开 FPC 的影响。直接创建也让别人不方便自定义这个页面 ,所以不推荐这种做法。

相关阅读

Exclude caching cusotm module by Magento 2 built in Full page cache(FPC problem)
How the full page cache works in Magento 2

发表评论

电子邮件地址不会被公开。 必填项已用*标注