Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Caching from URLs with a query string

The web application I'm working on serves up images with URLs like /image?name=a.gif. Pages are loading slowly partly because browsers are not caching the images.

Is there any combination of http headers that will persuade IE to cache the images even though the URL has a query string in it? I'm trying to avoid the browser making any unnecessary requests (including if-modified-since type requests)

I'm happy with a solution that works with IE (6+) only. Also, I know that I can avoid the problem by URL rewriting - I'm just interested in understanding browser caching better.

Thanks

like image 504
Snukker Avatar asked May 11 '09 21:05

Snukker


People also ask

Does URL include query string?

URL parameters (known also as “query strings” or “URL query parameters”) are elements inserted in your URLs to help you filter and organize content or track information on your website.

How do you cache a query?

You can create a Cached Query right from the Explorer. To cache a query, go ahead and save the query first. Fig 1: Press the button to "Save" the query. Then, to cache your most important queries select the “Enable Caching” checkbox and enter a refresh rate.

Does Cloudflare cache query string?

Cloudflare's CDN caches static content according to the levels below. You can adjust the caching level from the dashboard under Caching > Configuration > Caching level. Ignore Query String only disregards the query string for static file extensions. For example, Cloudflare serves the style.

What is a cache buster?

Cache busting is a way to prevent browsers from caching your ad content. Cache busting adds a random string to your ad tag each time the tag fires — typically a random number. Because the tag has a different number each time, the browser sends a new request each time.


2 Answers

It's commonly thought that a lot of older browsers (including IE6) and some older versions of caches like Squid won't cache any file that has a querystring attached, regardless of the expires date.

The more robust alternative to querystring versioning is to put versioning information into the path, such as:

site/static/23212903/css/bundle.css

Or:

site/images/logo.r23212903.png

For more, here's a great article on setting cache headers correctly by Sergey Chernyshev.

like image 151
Alex Dean Avatar answered Sep 23 '22 07:09

Alex Dean


Set the expires header in your web server to some far away date.

like image 26
Bjorn Avatar answered Sep 20 '22 07:09

Bjorn