Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am using Chrome and monitoring the http connections. I load a page and the response returned by the server contains

Cache-Control: max-age=86400
Expires: Thu, 18 Jul 2013 14:51:22 GMT

Therefore, I would not expect Chrome to make a request to the server when I try to reload this page. However, when I press the Reload button, I see a new connection to the server which in turn returns the same page with a new expiration date for the cache.

Anyone has an explanation?


Here is the request and response that I receive each time that I press the reload button (except that the time for Date, Expires and the value of CF-RAY in the response changes every time)


GET /mobile_13.xml HTTP/1.1
Cache-Control   max-age=0
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent  Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36
Accept-Encoding gzip,deflate,sdch
Accept-Language en-US,en;q=0.8
Cookie  __cfduid=d518a34eae859853e9a8dbfb6eb4078ed1366655468


HTTP/1.1 200 OK
Server: cloudflare-nginx
Date: Wed, 17 Jul 2013 14:51:20 GMT
Content-Type: text/xml
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: max-age=86400
Expires: Thu, 18 Jul 2013 14:51:19 GMT
Vary: Accept-Encoding
CF-RAY: 8f7bfeaf5f50697
Content-Encoding: gzip

<?xml version='1.0' encoding='UTF-8'?>
share|improve this question
Can you paste a screenshot of network log? Are there any 304 not modified logs? – easwee Jul 17 '13 at 15:18
No, the server returns a 200 with the entire xml. I edited my question to add the detailed request and response – J_D Jul 17 '13 at 17:12

Yes, Chrome intentionally "busts the cache" by setting max-age to 0 when you click "Reload". See the source here: ResourceFetcher.cpp:676

if (isReload || frameLoadType == FrameLoadTypeSame || request.isConditional() || request.httpMethod() == "POST")
    return ReloadIgnoringCacheData;

and here: FrameLoader.cpp:1176

if (request.cachePolicy() == ReloadIgnoringCacheData) {
    if (m_loadType == FrameLoadTypeReload)
        request.setHTTPHeaderField("Cache-Control", "max-age=0");

(I think these are the right spots, I'm not super-familiar with the Chromium code.)

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.