如何禁用或绕过单个页面的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进行请求。

09-30 11:56