Caching CSS and JS with auto-timestamping

Probably the most challenging elements of a website to cache correctly are the CSS and Javascript files. Getting the user’s browser to cache these files is a massive speed boost…but it’s absolutely imperative that you can expire the file and deliver an update at a moment’s notice.

The only way to do this reliably is to version the filename, but it’s a real bind to have to update the filename every time it changes. If you’re storing your CSS/JS files in a content management system like SDL Tridion this can be a real PITA.

However, with a little help from our old friend URL rewriting it’s easy to do. Here’s how…

Publish your CSS file as normal:

/css/homepage.css

Then in the tag, wrap the path with a server-side function call. This function grabs the timestamp from the file system and adds it to the filename, so the actual request made by the browser is:

/css/homepage_20100217200759.css

Since this file doesn’t really exist, we need a rewrite rule that strips the timestamp and serves the contents of the original destination.

Now every time you update your file on the file system the server-side function will alter the timestamp and the browser will be presented with a new file to download.

Hey presto!

Categories: CSS, JavaScript, Website performance

Leave a comment

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>