Theme revisions and WordPress cache busting

When you enqueue CSS or JS files WordPress will append the current WordPress version as a parameter … an attempt at cache busting.

The process by which sites or servers serve content or HTML in such a manner as to minimize or prevent browsers or proxies from serving content from their cache. This forces the user or proxy to fetch a fresh copy for each request. Among other reasons, cache busting is used to provide a more accurate count of the number of requests from users.
IAB

This type of parameter on your static resources is semi-useful. When you upgrade your version of WordPress returning visitors will be served with a fresh copy of your files. But what about all those changes you made to your style.css in between WordPress upgrades?

I use Beanstalk as my SVN repository host. Their coolest feature is automated and manual deployments. Simply commit your changes locally and watch them deploy to your staging/production server within seconds. No FTPing (and no accidents). Beanstalk puts a single file in the root directory of wherever you’re deploying to called .revision. It contains a single integer which is the latest revision that was deployed. You could manually update a file like this if you don’t use deployments.

So this function below grabs that revision number. You can then place this function in your enqueue call to replace the default WordPress version parameter with the latest SVN revision number … busting caches when they need to be.

3 Replies to “Theme revisions and WordPress cache busting”

  1. As an alternative you can use filemtime:

    wp_register_style( ‘child’, CHILD_URL . ‘/stylesheets/child.css’, false , filemtime( CHILD_DIR . ‘/stylesheets/child.css’ ) );

    if the file is changed, css gets updated

  2. When you enqueue CSS or JS files WordPress will append the current WordPress version as a parameter

    This is true only if you don’t manually set version in register/enqueue function.

Leave a Reply

Your email address will not be published. Required fields are marked *