如何禁用或绕过单个页面的FPC?我不想使用打洞,因为页面上有几个需要动态处理的块,我宁愿修改一个config/class来指定不应缓存整个页面(类似于 checkout 的行为) )。
我对FPC的理解是,它不用于“ session 用户”(登录,添加到购物车等)。但是,我看到FPC会在用户登录时影响页面。如果禁用FPC,则该页面将按需要工作。
最佳答案
这是为特定 Controller 禁用FPC的解决方案(也可以扩展到特定操作)。
首先创建一个Observer来监听controller_action_predispatch
事件:
public function processPreDispatch(Varien_Event_Observer $observer)
{
$action = $observer->getEvent()->getControllerAction();
// Check to see if $action is a Product controller
if ($action instanceof Mage_Catalog_ProductController) {
$cache = Mage::app()->getCacheInstance();
// Tell Magento to 'ban' the use of FPC for this request
$cache->banUse('full_page');
}
}
然后将以下内容添加到该模块的
config.xml
文件中。这在<frontend>
部分中:<events>
<controller_action_predispatch>
<observers>
<YOUR_UNIQUE_IDENTIFIER>
<class>YOURMODULE/observer</class>
<method>processPreDispatch</method>
</YOUR_UNIQUE_IDENTIFIER>
</observers>
</controller_action_predispatch>
</events>
现在,Magento每次都会提供您的页面,并绕过FPC进行请求。