Fastly Not Caching: Always X-Cache MISS

Share
Workaround available Web Updated November 14, 2026How we research

Quick answer

Check headers with curl to see whether Fastly serves HIT or MISS and what TTL it applies, then set caching with Surrogate-Control or Cache-Control.

Most likely fix: Inspect headers

How to fix it

Try these in order — the most common fix is first.

  1. 1. Inspect headers

    1. Run curl -svo /dev/null www.example.com/index.html and read X-Cache, Age and X-Served-By
    2. Run the same with -H "Fastly-Debug:1" to see Fastly-Debug-Path and Fastly-Debug-TTL; repeat a few times
    3. In Fastly-Debug-TTL, M means the object was not cached
    Did this fix it?
  2. 2. Set a TTL for Fastly

    1. Have the origin send Surrogate-Control: max-age=86400 (controls Fastly only) or Cache-Control
    2. Request twice and confirm X-Cache: HIT
    Did this fix it?
  3. 3. Use Check Cache sparingly

    1. Control panel, service, Check Cache, enter the full URL
    2. Each click makes every cache node request your origin, so prefer curl
    Did this fix it?

Symptoms

Responses always show X-Cache: MISS and traffic keeps hitting your origin.

Why it happens

  • No usable TTL on the response (Fastly caches by headers such as Surrogate-Control or Cache-Control)
  • Object was not cached at the time of the query
  • Different cache nodes hold different content hashes
  • The first requests after a purge are MISS by design

This guide also covers

  • fastly x-cache miss
  • fastly not caching
  • fastly cache miss every request
  • fastly check cache

Still not working?

If Fastly keeps failing, you're not alone. See every Fastly problem users report or the alternatives people switch to.

Have an app idea? Our small team builds any software: web and mobile apps, games, desktop, AI tools. Price agreed together.

Talk to us
Fixed it? Share this guide

Other Fastly errors