X-Drupal-Cache header not always appearing on page I have a site which uses Drupal core anonymous caching.  However, I have noticed a very strange behavior. Sometimes I will load the home page and in the response headers will be the 'X-Drupal-Cache' header.  But if I reload the page again, the 'X-Drupal-Cache' header disappears.  I cannot understand how this could happen. 

What might be the cause?

The response headers also containL Cache-Control:no-cache, must-revalidate, post-check=0, pre-check=0, which I understand will force the browser not to use a cached version of the page.

Strange thing is that if I access the same page using curl (e.g. curl -I http://example.com/), the X-Drupal-Cache header appears each and every time.
The behavior you're seeing is the result of having a browser cache. After the first request, your browser caches the document and keeps track of its  signature through the Etag/Last-Modified headers.

Upon subsequent requests, the browser makes a request to the server with the If-None-Match/ If-Modified-Since headers. If the document hasn't changed, the server returns a HTTP 304 Not Modified which tells the browser it's okay to serve its cached version of the page.

Because cURL doesn't have a caching mechanism, X-Drupal-Cache always appears; it needs to go directly to Drupal each time for the document.