Filename Cache Busting with CakePHP
Jul 19, 2012
2 minute read

This assumes you’re using CakePHP 2.x

CakePHP let’s you use timestamp based cache busting on your assets by enabling Asset.timestamp in your core.php file. By enabling this and using the builtin HtmlHelper::css and HtmlHelper::script methods, your assets will have a timestamp appended to them as a query string. For example:

/app.js?123456789

However, older squid proxies will not cache anything that has a query string, thus preventing your files from being cached. An alternative solution is to move the timestamp into the filename, and then use htaccess or similiar rewrite rule system to map those files back to the actual files on disk. The end output would be something like the following:

/app.123456789.js

To implement this in CakePHP, you need to override the assetTimestamp in AppHelper.php

Use the following in your .htaccess file. If you’re not using Apache, see the html5 boilerplate for nginx or web.config files.

Read more about filename cache busting at the Html5 Boilerplate Wiki entry on cache busting.