Advertising disclosure: We may earn a commission from links on this site. Commercial relationships can affect placement. Product facts, limitations, and source dates remain part of our editorial record.

How funding works
Web Hosting

Cloudflare cache responses: A Guide for Website Owners

Learn how Cloudflare’s CF-Cache-Status and Age headers explain cached, bypassed, dynamic, and refreshed responses, plus practical troubleshooting steps.

Review sources
Research standard

Facts that can change should include a source and check date. Benchmark claims should state the plan, region, method, and test period.

Cloudflare cache responses are diagnostic labels in the CF-Cache-Status response header. For a website owner, HIT means Cloudflare served a cached copy. MISS means the resource could be cached, but no cached copy was available, so Cloudflare requested it from the origin. These labels describe Cloudflare’s handling of a response; they are not rankings or guarantees and should not be generalized to every hosting or CDN provider.

Cloudflare cache response statuses#

Data table from this page
StatusWhat it means
HITCloudflare found the resource in its cache and served the cached copy.
MISSThe resource could be cached, but no cached copy was available, so Cloudflare requested it from the origin server.
EXPIREDA cached copy had expired, so Cloudflare requested an updated version from the origin.
STALECloudflare served an expired cached copy because it could not contact the origin.
BYPASSThe request was initially eligible for caching, but the response was not cacheable. Cloudflare gives certain cache-control headers, cookies, or Vary: * as examples.
REVALIDATEDThe origin confirmed that the cached resource had not changed, so Cloudflare served the cached copy.
UPDATINGCloudflare served an expired copy while updating it from the origin in the background.
DYNAMICCloudflare determined that the request was not eligible for caching.
NONE/UNKNOWNCloudflare generated the response before a normal cache decision, such as for some Worker, WAF, or redirect responses.

BYPASS and DYNAMIC describe different situations. BYPASS means the request was initially eligible, but the response could not be cached under the applicable conditions. DYNAMIC means Cloudflare determined that the request was not eligible for caching.

Use the Age header for additional context#

When Cloudflare serves a cached response, check the Age response header as well. It indicates how long the asset has been in Cloudflare’s cache since admission or its last revalidation. Read CF-Cache-Status and Age together: the status describes the cache decision, while Age provides timing context for a cached response.

Troubleshoot an unexpected response#

Start by inspecting CF-Cache-Status for the affected resource.

  • A HIT confirms that Cloudflare served a cached copy.
  • A MISS indicates that Cloudflare had to request the resource from the origin because no cached copy was available.
  • EXPIRED, STALE, and UPDATING indicate that an expired copy was involved, with different origin or background-update conditions.
  • For an unexpected BYPASS or DYNAMIC result, review the Cloudflare Cache Rules and the origin’s cache-control headers. Cloudflare documents these as relevant places to investigate whether a response is being excluded from caching.

If cached files need to be refreshed, Cloudflare documents cache purging as a way to make it fetch fresh versions of cached files. Use the Cloudflare cache documentation for the applicable configuration and purging instructions.

Sources

  1. Cloudflare cache responses Checked 2026-09-25
  2. Cloudflare cache documentation Checked 2026-09-25