When you're using Varnish caching in Drupal 7 and 8, you might see headers on an HTTP request that mentions a Varnish HIT and a Drupal cache MISS. This result isn't abnormal. Here's how it happens:
MISS, so it's passed through to Drupal.MISS.MISS.MISS response, which includes the X-Drupal-Cache: MISS response header.When the page is requested again, it will be a cache HIT for Varnish, but it will contain the now cached response from Drupal, which has the X-Drupal-Cache: MISS response header. Every time a request for that page returns a Varnish HIT, it terminates without hitting Drupal. Because of this, the X-Drupal-Cache header is not necessarily providing up-to-date information, because it was cached in the past and will remain there until the cache's TTL (Time to Live) (max-age) has passed.
This pattern of MISS and HIT will occur when Varnish and Drupal are set up in the following two ways:
Acquia recommends large values for the expiration of cached pages, because Varnish obeys this value. Large values mean that most of the anonymous traffic will terminate in Varnish.