LLumen
← All articles

ISR in practice: static speed without the redeploys

Sponsored by Vercel

Cover — isr-in-practice

Editorial content has a lopsided rhythm: reads vastly outnumber writes. ISR is built for exactly that shape — pages are generated once, served from the CDN, and regenerated in the background when they go stale.

The setup here

  1. Every page exports revalidate = 3600 — an hourly staleness budget.

  2. generateStaticParams pre-builds all known posts at deploy time.

  3. A new slug renders on first request, then joins the static set.

That alone gives static-CDN performance with no redeploy on publish. But an hourly window is an eternity when an editor fixes a typo in a headline.

On-demand revalidation closes the gap

A Contentful webhook fires on publish and unpublish, and a small route handler calls revalidatePath for the affected pages. Publish-to-live drops from 'up to an hour' to seconds — and the hourly window remains as a safety net for anything the webhook misses.

Cache invalidation stops being scary when you have two independent paths to correctness.


The failure modes are forgiving, which is the real argument. If the webhook dies, content is at most an hour stale. If the CMS is down, the site keeps serving the last good version. Slow is the worst case — not broken.