Supported CDNs
Any CDN that caches at the edge benefits from warming. We recognize the major providers from their response headers automatically — no configuration, nothing to install.
Auto-detection
Each CDN reveals itself through its own header scheme. Per request we record the provider, the edge location (colo/PoP) and the cache status:
| CDN | Detected via | Cache status | Edge location |
|---|---|---|---|
| Cloudflare | cf-ray | cf-cache-status | colo code in cf-ray |
| Fastly | x-served-by | x-cache | PoP suffix in x-served-by |
| Amazon CloudFront | x-amz-cf-pop | x-cache | x-amz-cf-pop |
| Akamai | server header | x-cache (debug) | — |
| bunny.net | server header | cdn-cache | PoP in server |
| CDN77 | x-77-pop | x-77-cache | x-77-pop |
For Akamai, warming requests send the pragma: akamai-x-cache-on debug
header so the cache status becomes visible in the response. Other CDNs ignore it.
Cloudflare specifics
Classic CDN cache and Workers Cache
Cloudflare has two per-colo caches: the classic CDN cache (controlled by Cache Rules
and Cloudflare-CDN-Cache-Control) and the Workers Cache used
by frameworks that render in a Worker (Astro, Next.js on Workers, EmDash and others).
Both are per edge location and both are warmed by our requests — because the requests
genuinely enter Cloudflare's network at different colos.
Tiered caching
With Tiered Cache enabled, a miss at a small colo is fetched through a larger upper-tier data center that caches the response too. Warming passes fill those upper tiers, so even colos we never hit directly stop reaching your origin.
What if my CDN isn't listed?
Warming still works — a GET request fills any well-behaved HTTP cache. We just can't
label the provider, so those requests are reported under origin with generic
x-cache detection. If your CDN exposes identifiable headers,
tell us and we'll add detection.
Prerequisites on your side
- Pages must be publicly reachable (no login wall on the URLs you warm).
- Responses must be cacheable: a
Cache-Controlwithpublic, max-age=…ors-maxage=…, or a CDN-level cache rule. Ano-storeresponse cannot be warmed by anyone. - Cookies that vary the response (session cookies on anonymous pages) usually make responses uncacheable — check your CDN's cacheability rules.