ProductsFor your stack
Edge CacheServed from the edge. Fresh the moment you publish.
Published content is served from the nearest of Fastly's edge locations, typically in 20 to 50 ms. When you publish, it clears only the responses that changed, keeps serving the last copy while the edge refreshes, and your page is live in two to three seconds. No rebuilds, no revalidate timers.
- /api/entries/menus/…0021m:menus e:…0021v8
- /api/entries/menus?sort=titlem:menus e:…0021 e:…0022v8
- /api/entries/articles?limit=10m:articles e:…002ecached
- /api/graphql?…BlogIndexm:articles m:authorscached
- /api/entries/pages/…0007m:pages e:…0007cached
- /files/brand/hero.jpg?width=800f:…00c4cached
- GET /menuHIT · 27 ms
- Publish “Autumn menu”v8
- Soft purge m:menus e:…00212 of 6
- GET /menuHIT · stale · 24 ms
- GET /menuHIT · v8 · 22 ms
- Live everywhere2.4 s
Press Publish. Nobody waits.
What happens in the two to three seconds between your click and a fresh page on every edge.
- 01
A new version
Capa saves the version you published and points the entry at it. Drafts never reach the cache, so saving one changes nothing a visitor sees.
- 02
Purge only what changed
Every cached response carries surrogate keys for the entries and models in it. Capa purges the entry's key and its model's key. Everything else stays warm.
- 03
Serve while it refreshes
The purge is soft. The next reader gets the previous copy at once while the edge fetches the new one behind them.
- 04
Live everywhere
Two to three seconds after you press Publish, every edge serves the new version. Unpublish and delete purge hard, so a takedown is immediate.
Nothing magic. Just good headers.
Every production response says how long it lives, what it may serve while it refreshes, and which keys purge it.
Keys for every entry and model
Surrogate-Key lists the project, the key, every model and every entry in the response. A publish finds every response that showed the entry, lists included.
Stale while revalidating
The edge can keep serving a response for a day while it fetches a fresh one, so a refresh never puts a visitor behind a slow request.
Stale if the origin stumbles
If the origin errors, the edge keeps answering with the last good copy for up to a week.
ETags for free
Send the ETag back as If-None-Match and an unchanged answer is a 304 with no body.
HTTP/1.1 200 OK
cache-control: public, max-age=60
surrogate-control: max-age=60, stale-while-revalidate=86400, stale-if-error=604800
surrogate-key: t:… c:…:1 k:… m:… e:…002e e:…002c
etag: "ec0d0bb2483b4f758082c5078cc60420"
capa-version: 2026-10-01
vary: Origin, x-api-key, Capa-Version, Capa-ContractRetire the revalidate timer. Keep the speed.
Static rebuilds and incremental regeneration exist because CMS reads were slow. With published content already at the edge, the page can simply ask.
| Rebuilds and timers | Capa Edge Cache | |
|---|---|---|
| Publish to live | A rebuild, or whenever the revalidate window runs out | Two to three seconds, measured |
| What refreshes | The whole site, or the pages you remembered to tag | Only the responses that held the entry or its model |
| The next reader | Can wait on a build or a fresh render | Gets the previous copy instantly while the edge refreshes |
| What you maintain | Revalidate times, cache tags and a webhook route | Nothing. Read from cdn.capacms.com |
Fast from the nearest edge.
- 20 to 50 msA typical cached read, nearest edge
- 2 to 3 sFrom Publish to live, measured
- 1 yearAt the edge for every image size
- 7 daysOf last good copy if the origin errors
Publish to live measured at 2.3 to 2.6 seconds on 1 October 2026.
Details that keep every page warm.
- Pro and up
Rewarm
Capa fetches purged and soon-to-expire responses again before a visitor asks, so even the first reader after a publish gets a warm answer.
- Drafts
Drafts stay out of the cache
A development key reads drafts, and its responses are sent with no-store, so the edge never keeps them.
- Keys
Revoking a key purges it
Rotate, narrow or deactivate a key and everything it could read leaves the edge with it.
- Takedowns
Gone means gone
Unpublish or delete an entry and its responses drop at once. Its 404 is cached too, until a publish brings it back.
- Your CDN
Tags for your own cache
The SDK hands you each response's surrogate keys, and revalidateFromWebhook refreshes the right Next.js tags on publish.
- Admin
See it and purge it
Developers > Cache shows what is cached and lets a developer purge by hand when they need to.
Fast at the edge. Fresh after every publish.
Point your reads at cdn.capacms.com and delete your revalidate timers.