For some reason I want to disable Full Page Cache for CMS pages including Home Page.
I have created my custom module for this but some reason it is not working.
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Custom_HeaderFix>
<version>1.0.0</version>
</Custom_HeaderFix>
</modules>
<global>
<models>
<headerFix>
<class>Custom_HeaderFix_Model</class>
</headerFix>
</models>
</global>
<frontend>
<events>
<controller_action_predispatch_cms>
<observers>
<headerCache>
<type>singleton</type>
<class>headerFix/observer</class>
<method>processPreDispatch</method>
</headerCache>
</observers>
</controller_action_predispatch_cms>
</events>
</frontend>
</config>
Observer.php
<?php
class Custom_HeaderFix_Model_Observer {
public function processPreDispatch(Varien_Event_Observer $observer) {
$action = $observer->getEvent()->getControllerAction();
if ($action instanceof Mage_Cms_PageController) {
$cache = Mage::app()->getCacheInstance();
// Tell Magento to 'ban' the use of FPC for this request
$cache->banUse('full_page');
}
}
}
My code is working on CMS pages but not for home page
2 Answers 2
If it works for all pages, except the home page, you should replace
if ($action instanceof Mage_Cms_PageController)
with
if ($action instanceof Mage_Cms_PageController
|| $action instanceof Mage_Cms_IndexController)
-
Ahh what a poor mistake by me, how can I forget cms page and home page controllers are different.Anshu Mishra– Anshu Mishra2015年07月07日 11:48:09 +00:00Commented Jul 7, 2015 at 11:48
-
How can I remove only the header from FPCAnshu Mishra– Anshu Mishra2015年07月07日 12:41:48 +00:00Commented Jul 7, 2015 at 12:41
-
Holepunching with
cache.xml: techytalk.info/…Fabian Schmengler– Fabian Schmengler2015年07月07日 12:43:44 +00:00Commented Jul 7, 2015 at 12:43
The full page cache uses the event controller_action_predispatch as well and its observer will be executed first because core modules are always loaded before local modules.
I see two possible solutions:
use an event that is triggered before, like
controller_front_init_routers- the problem here is that the controller action is not determined yet so you'll have to use the routers' matching methods. This probably makes the page load remarkably slowerRewrite the full page cache observer
pagecache/observerand overrideprocessPreDispatch()to check for the controller action before calling the parent method.
-
I will try your code. But my code is working on CMS pages but not for home page.Anshu Mishra– Anshu Mishra2015年07月07日 11:41:33 +00:00Commented Jul 7, 2015 at 11:41
Explore related questions
See similar questions with these tags.