# sitewarm > Cache warming after every deploy: sitewarm requests the pages in your sitemap and reports the cache state your CDN returns for each one. sitewarm warms the CDN cache after a deploy and reports, per page, the cache state the CDN returned and where it was measured from. The pages below explain cache warming and define the HTTP caching and CDN terms behind it, with RFC and CDN documentation as sources. ## Articles - [Why cache warming matters after a purge](https://sitewarm.dev/why-cache-warming): What cache warming is, what happens to a CDN after a purge or deploy, and how a cold cache affects origin load, TTFB, LCP and crawling. - [Top 10 CDNs in 2026 for caching and warming](https://sitewarm.dev/blog/best-cdns-2026): Ten CDNs scored on cache-status headers, purge, origin protection, CDN-only TTLs and stale serving, from vendor docs read in October 2026. ## Glossary: HTTP caching headers - [Cache-Control](https://sitewarm.dev/resources/cache-control): Cache-Control is the HTTP header that tells browsers and CDNs whether a response may be stored, for how long, and when it must be revalidated. - [max-age](https://sitewarm.dev/resources/max-age): max-age sets how many seconds a response stays fresh after the origin generated it. Every cache, private or shared, may reuse it until then. - [s-maxage](https://sitewarm.dev/resources/s-maxage): s-maxage sets the freshness lifetime for shared caches such as CDNs only. It overrides max-age and Expires there, and browsers ignore it. - [no-cache](https://sitewarm.dev/resources/no-cache): no-cache lets a cache store a response but requires it to revalidate with the origin before every reuse. It does not mean do not cache. - [no-store](https://sitewarm.dev/resources/no-store): no-store tells every cache, browser or CDN, not to store any part of the request or the response. Each request then goes to the origin. - [public and private](https://sitewarm.dev/resources/public-private): private lets only the browser cache a response. public lets shared caches such as a CDN store it, even for requests that carry Authorization. - [stale-while-revalidate](https://sitewarm.dev/resources/stale-while-revalidate): stale-while-revalidate lets a cache serve a stale response for a set number of seconds while it fetches a fresh copy in the background. - [stale-if-error](https://sitewarm.dev/resources/stale-if-error): stale-if-error lets a cache serve a stale response for a set number of seconds when the origin errors or cannot be reached. - [must-revalidate](https://sitewarm.dev/resources/must-revalidate): must-revalidate forbids a cache from serving a stale response without checking the origin first. If the origin is down, the cache returns an error. - [immutable](https://sitewarm.dev/resources/immutable): immutable tells clients a response will not change while it is fresh, so they skip revalidation, even on reload. Use it for fingerprinted assets. - [Expires](https://sitewarm.dev/resources/expires): Expires gives a date after which a response is stale. It predates Cache-Control, and caches ignore it whenever max-age or s-maxage is present. - [ETag](https://sitewarm.dev/resources/etag): An ETag is a validator: an opaque tag the origin assigns to one version of a response, so caches can revalidate it with If-None-Match. - [Last-Modified](https://sitewarm.dev/resources/last-modified): Last-Modified gives the date a resource last changed. Caches send it back in If-Modified-Since to revalidate, and use it for heuristic freshness. - [Vary](https://sitewarm.dev/resources/vary): Vary lists the request headers that changed the response. Caches store one variant per value, so a broad Vary splits the cache and lowers hits. - [Age](https://sitewarm.dev/resources/age): Age is the number of seconds since the origin generated or revalidated a response. A cache sets it; 0 or no Age usually means it came from origin. - [CDN-Cache-Control](https://sitewarm.dev/resources/cdn-cache-control): CDN-Cache-Control is a targeted header, defined in RFC 9213, that sets caching rules for CDNs only and overrides Cache-Control there. - [Cache-Status](https://sitewarm.dev/resources/cache-status): Cache-Status, defined in RFC 9211, is a standard response header in which each cache on the path reports whether it served a hit and why. ## Glossary: CDN concepts - [PoP (point of presence)](https://sitewarm.dev/resources/pop): A PoP is a CDN data center that terminates visitor connections and holds its own cache. A page cached in one PoP is not cached in the others. - [Origin server](https://sitewarm.dev/resources/origin-server): The origin server is where your site is actually generated or stored. A CDN fetches from it on a miss and serves cached copies otherwise. - [Cache key](https://sitewarm.dev/resources/cache-key): A cache key is the identifier a cache files a response under, usually the method and URL plus selected headers, cookies or query parameters. - [TTL (time to live)](https://sitewarm.dev/resources/ttl): TTL, or time to live, is how long a cache keeps a response fresh before it must revalidate or refetch it. In HTTP it comes from max-age or s-maxage. - [Cache hit and miss](https://sitewarm.dev/resources/cache-hit-miss): A hit is a request answered from cache. A miss is one the cache had to forward to the origin because it had no usable stored copy. - [Cache hit ratio](https://sitewarm.dev/resources/cache-hit-ratio): The cache hit ratio is the share of requests a CDN serves from cache. Purges, short TTLs and broad cache keys or Vary headers all lower it. - [Tiered caching](https://sitewarm.dev/resources/tiered-caching): Tiered caching puts upper-tier caches between edge PoPs and the origin, so a miss at the edge asks an upper tier before the origin. - [Request collapsing](https://sitewarm.dev/resources/request-collapsing): Request collapsing merges concurrent misses for the same object into one origin request, so a cold cache does not send a crowd to your origin. ## Glossary: Purging & invalidation - [Cache invalidation (purge)](https://sitewarm.dev/resources/cache-invalidation): Cache invalidation, or purging, removes or marks stale cached copies before their TTL ends, so the CDN fetches the new version from the origin. - [Surrogate keys (cache tags)](https://sitewarm.dev/resources/surrogate-keys): Surrogate keys, or cache tags, are labels a response carries so you can purge every cached object with that label at once instead of by URL. - [Cold cache](https://sitewarm.dev/resources/cold-cache): A cold cache has no stored copy of the pages being requested, so every request is a miss that goes to the origin until the cache fills again. - [Cache warming](https://sitewarm.dev/resources/cache-warming): Cache warming is requesting your pages through the CDN right after a purge or deploy, so the first visitors get a cached copy, not an origin trip. ## Glossary: Performance & SEO - [TTFB (time to first byte)](https://sitewarm.dev/resources/ttfb): TTFB is the time from starting navigation to the first byte of the response. A cache miss adds the origin round trip to it. About 0.8 s or less is good. - [LCP (Largest Contentful Paint)](https://sitewarm.dev/resources/lcp): LCP is the time until the largest image or text block in the viewport renders. It is a Core Web Vital, good at 2.5 s or less at the 75th percentile. - [Core Web Vitals](https://sitewarm.dev/resources/core-web-vitals): Core Web Vitals are Google's metrics for loading (LCP), responsiveness (INP) and visual stability (CLS), measured from real Chrome users. - [Crawl budget](https://sitewarm.dev/resources/crawl-budget): Crawl budget is how many URLs Googlebot can and wants to crawl on a site. Fast, error-free responses raise the crawl capacity limit. - [XML sitemap](https://sitewarm.dev/resources/xml-sitemap): An XML sitemap lists the URLs of a site, with optional lastmod dates, so crawlers can find them. It is also a ready-made list of pages to warm. ## CDN guides - [Cloudflare](https://sitewarm.dev/blog/cdns/cloudflare): How Cloudflare caches: cf-cache-status values, Cache Rules for HTML, purge versus invalidate, Tiered Cache and what each means for cache warming. - [Fastly](https://sitewarm.dev/blog/cdns/fastly): How Fastly caches: X-Cache and X-Served-By headers, Surrogate-Control, purge by surrogate key with soft purge, shielding and request collapsing. - [Vercel](https://sitewarm.dev/blog/cdns/vercel): How the Vercel CDN caches: x-vercel-cache values, Vercel-CDN-Cache-Control, cache tags with invalidate or delete, and why a deploy starts its own cache. - [Amazon CloudFront](https://sitewarm.dev/blog/cdns/amazon-cloudfront): How Amazon CloudFront caches: X-Cache and log result types, cache policy TTLs, invalidation by path or tag, Origin Shield and per-edge cold starts. - [KeyCDN](https://sitewarm.dev/blog/cdns/keycdn): How KeyCDN caches: X-Cache and X-Edge-Location headers, Max Expire and origin headers, zone and URL purges, and Origin Shield with collapsed forwarding. - [Akamai](https://sitewarm.dev/blog/cdns/akamai): How Akamai caches: Pragma debug headers and X-Cache codes, Property Manager TTLs, Fast Purge by URL, CP code or tag, prefresh and Tiered Distribution. - [Netlify](https://sitewarm.dev/blog/cdns/netlify): How Netlify caches: the Cache-Status header, Netlify-CDN-Cache-Control, the durable cache for functions, tag purges and what each deploy invalidates. - [Bunny.net](https://sitewarm.dev/blog/cdns/bunny-net): How Bunny.net caches: the CDN-Cache header, origin Cache-Control and Smart Cache, Perma-Cache, Origin Shield, request coalescing and tag purges. - [Google Cloud](https://sitewarm.dev/blog/cdns/google-cloud-cdn): How Google Cloud CDN caches: cache modes, CDN-Cache-Control, a custom cache-status header, invalidation by path or tag, and when to use Media CDN. - [Azure Front Door](https://sitewarm.dev/blog/cdns/azure-front-door): How Azure Front Door caches: X-Cache values, origin headers and the one-to-three-day default, path purges, and the retirement dates of Azure CDN classic. ## Optional - [Cache warming & CDN caching glossary](https://sitewarm.dev/resources): Definitions of HTTP caching headers, CDN concepts, purging and the performance metrics behind cache warming, with RFC and CDN sources. - [Blog: cache warming and CDN caching](https://sitewarm.dev/blog): Articles on cache warming, CDN caching and purges: how caches go cold after a deploy and what that costs your origin and your visitors. - [Open source: what is public and what is hosted](https://sitewarm.dev/open-source): The sitewarm CLI is open source under Apache-2.0. The hosted dashboard and API are proprietary. What is public, how to contribute and report issues. - [Full text](https://sitewarm.dev/llms-full.txt): The articles and glossary of this site as one Markdown document, for a single fetch. - [Sitemap](https://sitewarm.dev/sitemap.xml): Every public page with its last change date.