Invalidate cache for static files?

Igor Sysoev is at
Mon Jul 21 20:03:54 MSD 2008

On Mon, Jul 21, 2008 at 04:35:30PM +0100, Phillip B Oldham wrote:

> I don't think moving/renaming files would be a great option. There are a 
> lot of files to manage, and a lot of links to them in the source. Would 
> be a bit of a nightmare.
> It would be useful if nginx supported Etags based on last modified time. 
> Especially if the etag could be cached and a customer signal could be 
> passed to nginx to clear this cache.

nginx supports Last-Modified header. However, Last-Modified as well as ETag
do not help to invalide browsers' cache.

> Denis Arh wrote:
> >Would it help moving them into a different folder instead of appending 
> >query string?
> >
> >Sent from my iPhone
> >
> >On 21.7.2008, at 16:55, Tit Petric <black at> wrote:
> >
> >>
> >>
> >>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
> >>
> >
> >
> -- 
> *Phillip B Oldham*
> The Activity People
> phill at <mailto:phill at>
> ------------------------------------------------------------------------
> *Policies*
> This e-mail and its attachments are intended for the above named 
> recipient(s) only and may be confidential. If they have come to you in 
> error, please reply to this e-mail and highlight the error. No action 
> should be taken regarding content, nor must you copy or show them to anyone.
> This e-mail has been created in the knowledge that Internet e-mail is 
> not a 100% secure communications medium, and we have taken steps to 
> ensure that this e-mail and attachments are free from any virus. We must 
> advise that in keeping with good computing practice the recipient should 
> ensure they are completely virus free, and that you understand and 
> observe the lack of security when e-mailing us.
> ------------------------------------------------------------------------

> begin:vcard
> fn:Phillip Oldham
> n:Oldham;Phillip
> org:The Activity People;Systems Development
> email;internet:phill at
> title:Chief Programmer
> tel;work:0870 162 4847
> x-mozilla-html:TRUE
> url:
> version:2.1
> end:vcard

Igor Sysoev

More information about the nginx mailing list