Caching is difficult. The fact that the browser can ignore cache directives certainly does not help.
According to this document, IE never cached any request with a Vary header containing nothing but Accept-Encoding and User-Agent
If I test this with a cache period of 15 seconds and I just install MaxAge and MustRevalidate, it looks like it works fine with IE9, FireFox and Chrome.
HttpResponseMessage Web API:
result = new HttpResponseMessage<Book>(book); result.Headers.CacheControl = new CacheControlHeaderValue(); result.Headers.CacheControl.MaxAge = TimeSpan.FromSeconds(15); result.Headers.CacheControl.MustRevalidate = true; return result;
Answer headers:
HTTP/1.1 200 OK Server: ASP.NET Development Server/10.0.0.0 Date: Wed, 25 Jan 2012 09:13:32 GMT X-AspNet-Version: 4.0.30319 Content-Length: 98 Cache-Control: must-revalidate, max-age=15 Content-Type: application/json; charset=utf-8 Connection: Close
I'm not sure MustRevalidate is really required, but it is recommended to use it. See Specifications here .
source share