Aze*_*sni 1 php magento magento2
我有一条路线可以构建有效负载并将其提交到其他站点,
像这样
[
...
'hash' => 'MD5_HASH_FOR_THIS_PAYLOAD'
]
Run Code Online (Sandbox Code Playgroud)
但问题是当我访问此路由时,magento 第二次缓存数据,magento 发送旧有效负载的请求,
execute我在控制器的方法中尝试了以下代码
<?php
$cacheManager = $objectManager->get('\Magento\Framework\App\Cache\Manager');
$types = array('full_page');
$cacheManager->flush($types);
Run Code Online (Sandbox Code Playgroud)
但对我没有用。
我没有此页面的 xml 布局,只有一个由控制器创建的块
$block = $this->_view->getLayout()->createBlock('Vendor\Module\Block\MyBlock');
$block->setCacheable(false);
Run Code Online (Sandbox Code Playgroud)
有人可以帮我如何从 FPC 中排除这条路线吗?
我想您的特定页面有带有模板和块的布局吗?
Magento 的页面缓存使用的是块信息。如果一个页面只有可缓存的块,那么magento将认为该页面可以被缓存。
cacheable="false"只需在需要动态的页面块的布局中添加 即可。清空缓存并让 magento 完成剩下的工作。
所以你的布局中的块应该是这样的:
<block class="..." name="my_custom_block" as="custom" template="..." cacheable="false"/>
Run Code Online (Sandbox Code Playgroud)
如果您不使用布局而是动态创建块,那么您可以在 _construct 方法中简单地设置块上的cache_lifetime:
protected function _construct()
{
parent::_construct();
$this->addData(array('cache_lifetime' => null));
}
Run Code Online (Sandbox Code Playgroud)
我不认为直接在控制器中动态创建块是一个好的做法。