Invalidate cache for static files?

Tit Petric black at scene-si.org
Mon Jul 21 18:55:00 MSD 2008



Maxim Dounin wrote:
> Hello!
>
> On Mon, Jul 21, 2008 at 01:57:06PM +0100, Phillip B Oldham wrote:
>
>> What would be the simplest way to invalidate browser cache of static  
>> files served by nginx?
>>
>> For instance, we have a website which is in active development. We 
>> get a  reasonable amount of traffic, but we often get complaints when 
>> we update  the live files because some browsers are working with a 
>> mix of fresh  (live) and stale (cached) js/css files. We'd like to 
>> inform/force  browsers that the file is new and should be updated.
>
> Just use normal web development practices, e.g. add "?v=<version>"
> to js/css urls.  Nothing special, nginx is just web server.
I've tried this before, it is problematic since cache doesn't behave 
correctly and in some cases browsers or even caching proxies in front of 
backend servers never cache the resource, because they percieve the link 
as dynamic.

Having unique urls, like I suggested in the previous email, solves 
theese problems. Also, you can then set the Expires & Cache-control 
headers for static content far in the future and encourage browser 
caching, since you have an effective method of always reloading them 
without fail. Caches and browsers will keep such objects, while the 
suggested sollution with the "?v=version" will not be cached on many of 
them, since they percieve the url as dynamic and always try a reload, 
ignoring possible Expires & Cache-control headers.

For a small setup, where you don't care about resources, your sollution 
is mostly fine, but is problematic in the real world with tens of 
thousands of users.

BR





More information about the nginx mailing list