INTEGRITY Cloudflare Docs

Investigate uncached responses

If a URL you expected to be cached is served from the origin every time, the cf-cache-status response header identifies which cache decision Cloudflare made. Fetch the URL, inspect the header, and follow the section that matches the value you see:

For any other status, refer to Cache responses for the full list.

Before you start

A recent Purge Everything, purge by URL, purge by prefix, purge by tag, or purge by hostname clears the cache. The next request in each data center repopulates cache and returns MISS before subsequent requests return HIT. If a purge ran recently, wait for the cache to repopulate before continuing.

DYNAMIC — request not eligible for cache

Cloudflare made the "do not cache" decision at request time, before looking in the cache. Common causes:

Once the request is eligible, subsequent responses reflect the response-time decision (HIT, MISS, BYPASS, and so on).

BYPASS — origin response is not cacheable

The request was eligible for cache, but the origin response or configuration prevented Cloudflare from storing it. Common causes:

Refer to BYPASS for the reference definition of this status.

Repeated MISS — cacheable but not in cache

MISS on the first request in each data center is expected — that request populates the cache. If the same URL keeps returning MISS across consecutive requests, one of the following is happening.

Cache key variance

Cloudflare builds the cache key from the origin scheme, host, path, and query string by default. Cookies, headers, and device type can also contribute when configured. The scheme in the cache key is the scheme Cloudflare uses to reach the origin, not the scheme the client used — a zone with a single origin scheme serves HTTP and HTTPS client requests from the same cache entry.

If each real client request produces a different key, the cache never sees a repeat and every request is a MISS. Common patterns:

Two identical requests produce the same cache key and cannot reveal variance. To diagnose, use Rule Trace to see the applied cache-key configuration and Vary action for the URL, then compare that against the request attributes (query string, cookies, headers, device type) that differ between real client requests.

Eviction and low-traffic assets

Low-traffic assets can be evicted from the cache before the next request arrives. If two consecutive requests to the same URL from the same data center both return MISS, enable Tiered Cache or Cache Reserve to retain long-tail content longer.

If your requests reach different Cloudflare data centers, each produces its own first-request MISS. Compare the data center code — the last three characters of the cf-ray header — to confirm two responses came from the same data center. Different client networks can still reach the same data center, so a network change does not guarantee a different location.

Confirm the response reaches cache

After adjusting configuration, request the URL twice from the same client and verify the expected outcome for your configuration:

If the response is still MISS or BYPASS after these checks, capture two full responses (request and response headers, including cf-ray values) and open a support case. The cf-ray values are required to trace the request through the Cloudflare network.