13

When we are developing new sites or testing changes in new ones that involve css after the new code is committed and someone goes to check the changes they always see a cached version of the old css. This is causing a lot of problems in testing because people never are sure if they have the latest css on screen (I know shift and clicking refresh clears this cache but I can't expect end users to know to do this). What are my possible solutions?

4 Answers 4

9

If you're serving your CSS from static files (or anything that the query string doesn't matter for), try varying that to ensure that the browser makes a fresh request, as it will think that it's pulling a completley different resource, so have for example:

"styles.css?token=1234" in the CSS reference in your markup and change the value of "token" on each CSS check-in

Sign up to request clarification or add additional context in comments.

7 Comments

I already use a static method to add css to pages so I added a timestamp of the build to the querystring works great thanks.
Although this solution will work it is totally unpractical for large websites that might have hundreds of references to .css and .js files.
@user357320, I refer you to lines 21 and 22 of this very page which is by some definitions a "large website". Luckily it's a well structured & designed website so doesn't have hundreds of references to contend with.
@Karlth Any website, especially a large one should use css and js bundling, and most libraries have the timestamp/version/hash generated into url, so one shouldn't have to modify hundreds of css links.
@user3285954 "Any website should" is easier said than implemented!
|
5

In your development environment, set the Expires header much lower. In your Production environment, set it higher, and then set it low about a week before you do your release.

Comments

2

Its not a great solution, but I've gotten around this before at the page level by adding a querystring to the end of the call to the CSS file:

 <link href="/css/global.css?id=3939" type="text/css" rel="stylesheet" />

Then I'd randomize the id value so that it always loads a different value on page load. Then I'd take this code out before pushing to production. I suppose you could also pull the value from a config file, so that it only has to be loaded once per commit.

Comments

2

Similar (a bit more detail) answers given for the JavaScript version of this question, which has the same problem/solution

Help with aggressive JavaScript caching

Comments

Your Answer

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

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.