My application.js file name looks like application-b600352536291bc180983d43e6a2407f.js
. So it has the md5 cache buster in its name. I have set the max-age option for static assets to 1 hour config.static_cache_control = "public, max-age=3600"
. But i am observing that the browser is not respecting the max-age
header and always revalidates from the server and does a round trip for a 304 Not Modified
. How can i save the round trip?
Request Headers
Request URL:https://blah.com/assets/application-b600352536291bc180983d43e6a2407f.js
Request Method:GET
Status Code:304 Not Modified
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
If-Modified-Since:Sun, 12 Feb 2012 07:36:16 GMT
Response Headers
Cache-Control:public, max-age=3600
Connection:keep-alive
Date:Sun, 12 Feb 2012 18:27:48 GMT
Last-Modified:Sun, 12 Feb 2012 07:36:16 GMT
Server:nginx
Vary:Accept-Encoding
Via:1.1 varnish
X-Varnish:499878183
Are you pressing
Command + R
orCtrl + R
? The browser refresh button intentionally re-checks the freshness of its assets. It assumes you're hitting refresh because something didn't function properly on the page.If you want to test the headers, visit the page once and then focus the location bar and press
Enter
to visit it a second time. The assets should come from the cache.