Micah
Micah

Reputation: 116090

What does '?' do in a Css link?

I was browsing the html of my favorite site...ahem...and I saw this in the markup:

<link href="/Content/all.min.css?d=20090107" rel="stylesheet" type="text/css" />

what does "?d=20090107" do? I'm assuming it's a date of some kind, but I'm not sure why it's in the path to the file. Any ideas?

Upvotes: 46

Views: 12393

Answers (3)

Sam Becker
Sam Becker

Reputation: 19636

It's to "clear the cache" every time the style is updated. I would speculate that whoever is responsible for those styles increments it every time there is a change. It's because the browser sees a different URL in the style field, so it will grab the latest version, even though it's technically in the same place on the server.

As helpfully pointed out in the comments, css files often have their expiry set well into the future, this method is a nice sidestep to cache related headers.

Quite a useful trick.

Upvotes: 12

Pez Cuckow
Pez Cuckow

Reputation: 14422

It is to make the browser think it is a new file every-time to it refreshes its cache.

Very useful when your stylesheets change regularly...

Upvotes: 4

Paul Dixon
Paul Dixon

Reputation: 300855

That is there to add some uniqueness to the filename, so that when they change the CSS file, they can change the extra bit to be totally sure that every client will reload the CSS rather than use a cached version.

The webserver will ignore the parameter and serve /Content/all.min.css normally

Note: While it's possible the CSS is dynamically generated, this is a common idiom for ensuring a reload, and given the parameter is a date, it seems quite likely.


Edit: Podcast 38 mentioned this...

We’ve been using the Expires or Cache-Control Header since we launched. This saves the browser round-trips when getting infrequently changing items, such as images, javascript, or css. The downside is that, when you do actually change these files, you have to remember to change the filenames. A part of our build process now “tags” these files with a version number so we no longer have to remember to do this manually.

Upvotes: 70

Related Questions