This is based on this Support Thread: http://devot-ee.com/add-ons/support/zoo-flexible-admin/viewthread/4202

In short: the menu in MSM doesn't change without HARD refreshes every time.

It looks like no one has managed to crack this nut yet and it's partially due to the ExpiresHeader, but I have no idea how to exclude a certain path by the expires header rule or any other way.

Thoughts? Client keeps emailing me saying she can't find things due to switching sites -- irony, since the Flexible Admin is meant to make it easier.

2 Answers 2


I suspect that you're running into an issue whereby your server sets content expiry headers for javascript and that's resulting in the addon's output being cached. I recently submitted a bug report for this issue, with the proposed fix being to explicitly set a no-cache header for javascript generated via the cp_js_end hook. The fix has been accepted for a future release but who knows when that will be. In the meantime you can apply it manually:

Open up controllers/cp/javascript.php and locate the _ext_scripts() function. Within that function locate this line:

$this->output->set_header("Content-Type: text/javascript");

Immediately underneath it add this:

$this->output->set_header("Cache-Control: no-cache, must-revalidate");

This will override your default headers and should ensure that a fresh copy of the ext_scripts output is retrieved with each page request.

  • If I do this, then I can keep my .htaccess as-is w/o commenting the Javascript line out?
    – lealea
    Dec 12, 2012 at 16:21
  • You should be able to, yes. It's certainly worked for me and this patch will be included in the next EE release, so it's not as if you need to worry about this being a hack. You don't really want to stop sending those headers for other JS files as they will be static and you almost certainly do want them to be cached.
    – Dom Stubbs
    Dec 12, 2012 at 16:52
  • No problem! Glad to hear that sorted it.
    – Dom Stubbs
    Dec 12, 2012 at 17:00

Is the ExpiresByType an htaccess rule you've added via HTML5 Boilerplate or something similar? I'd just comment it out. If it's from EE or an addon, try overriding it via an htaccess file that is closer to the files in question.

E.g., public_html/control_panel/.htaccess will be trump public_html/.htaccess

The files are cached by type so I don't think you can manually override a specific path.

  • OK, to double check, there's only ways to INCLUDE the ExpiresType not exclude 1 folder? That means, if I want the ExpiresHeaders on Javascript files, I would have to add a .htaccess file to specific/all Javascript folders EXCEPT the folder it's not supposed to expire?
    – lealea
    Dec 11, 2012 at 23:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.