Fix guide · Vercel

Vercel is serving an old page. A redeploy may not be enough.

Vercel caches whole responses on its CDN, and keeps a separate runtime cache for data. A new deployment gets a new cache key, which looks like a purge and is not one: Image Optimization and ISR content carry over.

Visitor's browsertheir own copyCDN edgeCloudflare, Hostinger CDN, QUIC.cloudTHIS GUIDEHost / server cacheLiteSpeed, Varnish, hPanelWordPress plugin cacheWP Rocket, W3TC, WP Super CacheYour actual fileswhat you just published
Vercel's CDN answers before your function runs. The runtime cache sits behind it and survives deployments.

Not sure this is the layer? Paste your URL and the checker reads the headers for you.

Check my site

How to tell it’s Vercel

Vercel sends x-vercel-cache on every response. There are six values. source

HITServed from the cache. If the page is old, this is your layer.
MISSNot in the cache, so it was generated by your function or origin.
STALEA cached copy was served while Vercel refreshed it in the background.
PRERENDERServed from static storage.
REVALIDATEDRegenerated in the foreground after the cached entry was deleted.
BYPASSVercel skipped the cache and served fresh content.

Don’t over-read a MISS. Vercel’s docs warn that for dynamic routes and fetches using the runtime cache, this header “often shows MISS even if the data is served from the runtime cache”. source The runtime cache is regional and persists across deployments. source

How to clear it

  1. Dashboard: open your project, choose CDN in the sidebar, then Caches. Under Purge cache pick what to purge and press Purge. Invalidate marks a tag stale and refreshes in the background; Delete revalidates in the foreground and Vercel does not recommend it. * purges the whole project. source
  2. CLI: vercel cache purge, or narrow it with --type cdn or --type data. By tag: vercel cache invalidate --tag blog-posts. source
  3. Next.js, in code: revalidatePath(), revalidateTag() or updateTag(). source

If the old page comes straight back

Working without it for a while

There is no global development mode for the CDN, but a request carrying Pragma: no-cache — which browsers send with devtools open — makes Vercel revalidate a stale resource synchronously. Draft Mode also produces BYPASS. source

Other fix guides

Sources

Every step above was written from these pages, read on 14 Sep 2026. Vendors move buttons; if one has moved, the source page will say where.

  1. Vercel — Response headers
  2. Vercel — Purge the CDN cache
  3. Vercel — CLI: vercel cache
  4. Vercel — Cache-Control headers
  5. Vercel — Cache status
  6. Vercel — Runtime cache