This library explains the cache-related headers and status words that appear in WordPress performance investigations. Headers are evidence, not decoration. A single header rarely tells the whole story, but together they can show whether a request was cached, bypassed, stale, private, or impossible to verify.
CF-Cache-Status
CF-Cache-Status is commonly seen on sites using Cloudflare. HIT means Cloudflare served the response from cache. MISS means Cloudflare did not have a cached copy for that request. BYPASS, DYNAMIC, EXPIRED, STALE, REVALIDATED, or NONE can appear depending on rules, cookies, cache eligibility, and product configuration. For WordPress, the important question is whether public HTML pages are eligible while private pages remain excluded.
Age
Age is one of the most useful cache headers because it shows how long a cached response has existed in a shared cache. If Age increases between requests, a cache layer is probably serving the response. If Age stays missing or resets constantly, the page may be bypassed, purged, or generated dynamically.
X-Cache
X-Cache is a general-purpose header used by many proxies and hosts. Values such as HIT, MISS, BYPASS, or EXPIRED are common, but meaning varies by provider. Always read it alongside Cache-Control, Set-Cookie, Age, and any host-specific documentation.
X-Varnish
X-Varnish can indicate that a request passed through Varnish. On its own it does not always prove the page was served from cache. Pair it with Age, Via, X-Cache, or provider-specific headers to determine whether Varnish stored and reused the response.
Cache-Control
Cache-Control tells browsers and shared caches how a response may be stored. Public pages often need cache-friendly directives. Private dashboards, account pages, carts, checkouts, previews, and logged-in views should prevent shared public caching.
Set-Cookie
Set-Cookie can be the reason a page will not cache. Many caches avoid storing responses that set cookies because the response may be personalized. WordPress sites often pick up extra cookies from analytics, consent tools, commerce plugins, membership systems, and security plugins.
Server-Timing
Server-Timing can expose useful backend timing information when a host or performance tool provides it. It is not a cache status by itself, but it can help explain whether a response was generated by PHP, served quickly from an edge, or delayed by backend work.
How to use the library
When debugging, compare the first and second logged-out request to the same URL. A healthy public page often shows a first MISS followed by a HIT or increasing Age. If the second request is still BYPASS or uncached, look for cookies, no-store directives, query strings, conflicting plugins, or CDN rules.