I have a webapp that serves an image:
I'm clearly setting the Cache-Control
header properly, and the web server is setting the Etag
.
The problem is that the resources is being If-None-Match
ed every single time effectively ignoring the Cache-Control
header. (The framework is returning 304 accordingly but the roundtrip exists).
I've read that the Etag
header may overrule Cache-Control
and still go to check the match even if the resource is local and valid. This makes no sense to me.
Anyone knows what's going on? What am I missing here?
PD: The web server is a Play! application
Finally got it. Some browsers (Google Chrome and Firefox for sure) ignore the local cache when you reload the page with CMD+R or F5.
In my case, no matter how high I set the max-age, a page reload will always force the If-None-Match
check and get a 304 back. Navigating through the website by clicking links will not trigger this behaviour and caches will work just fine.
Note: I didn't noticed this since in a single page webapp (like mine) there's no "link clicking navigation", since most of them are loaded at the beginning.