X-Cacheable
The HTTP X-Cacheable response header is an unofficial HTTP header indicating whether a CDN or reverse proxy considers the response eligible for Caching.
Note
The "X-" naming convention for HTTP headers, "X" referring to "experimental", has been deprecated and needs to be transitioned to the formal naming convention for HTTP headers.
Usage
CDN providers and reverse proxies add the X-Cacheable header to signal whether a response was stored in cache, and under what conditions. The header complements X-Cache by explaining the cacheability decision rather than the cache hit/miss outcome.
The values vary between providers and
configurations. Some implementations use simple
boolean values like YES or NO. Others include
structured values with a reason code separated by a
colon, such as NO:Private or YES:Forced. WP
Engine and Flywheel hosting platforms use this
header extensively, as do several managed WordPress
and enterprise CDN setups.
The header helps diagnose why certain responses are
or are not being cached. A value like NO:Private
points to a Cache-Control directive
preventing caching, while YES:Forced indicates the
cache layer overrode default behavior to store the
response.
Values
YES
The YES value means the response is cacheable and
was stored by the cache layer. This is the standard
positive indicator across most implementations.
YES:Forced
The YES:Forced value means the cache layer stored
the response even though default rules do not cache
the content. This often results from cache rules
configured at the CDN or hosting level overriding
origin headers.
YES:briefly
The YES:briefly value followed by a status code
(such as YES:briefly:504) means the response was
cached for a short duration. The appended status
code indicates the HTTP status of the cached
response. This pattern appears in WP Engine
configurations where error responses are cached
temporarily to protect the origin.
SHORT
The SHORT value means the response was cached with
a reduced TTL. The exact duration depends on the
CDN or hosting configuration. This value is common
on managed WordPress hosting platforms.
NO:Private
The NO:Private value means the response was not
cached because the Cache-Control header includes a
private directive. Private responses are intended
for a single user and are excluded from shared
caches.
NO:Not Cacheable
The NO:Not Cacheable value means the response
failed the cacheability check entirely. This applies
to responses where headers, method, or status code
prevent caching under any configuration.
non200
The non200 value means the response had a status
code other than 200 and was treated as
non-cacheable by the CDN. Many cache configurations
only store successful 200 OK responses by default.
CacheAlways: forever
The CacheAlways: forever value means the response
is always cached regardless of origin headers, with
no expiration. This typically applies to static
assets or resources like robots.txt on hosting
platforms with aggressive caching rules.
Example
A simple positive cacheability indicator. The CDN evaluated the response and determined the content is eligible for caching.
X-Cacheable: YES
When the response includes a private
Cache-Control directive, the cache layer marks the
response as not cacheable and includes the reason.
X-Cacheable: NO:Private
On managed WordPress hosting, a short-lived cache
entry is indicated by the SHORT value. The CDN
stored the response with a reduced TTL based on the
hosting platform's caching rules.
X-Cacheable: SHORT
A forced cache entry overrides origin headers.
YES:Forced means the CDN configuration explicitly
cached this response regardless of the origin's
Cache-Control directives.
X-Cacheable: YES:Forced
Takeaway
The X-Cacheable header reports whether a CDN or reverse proxy considers a response eligible for caching, often including a reason code explaining the decision.