DevOps专业术语
ISR
Incremental Static Regeneration
增量静态再生 · 静态速度 + 动态新鲜度的最优解
CI/CDSRE
ISR
- 定义
- ISR(Incremental Static Regeneration)是DevOps领域的专业术语。ISR 是 Next.
最后更新:2026-03-29
什么是ISR?
ISR 是 Next.js 提出的渲染策略,在静态生成(SSG)的基础上加入缓存失效机制:页面首次构建为静态 HTML,之后按设定的时间窗口或 API 触发在后台重新生成,用户始终看到快速的静态页面,同时内容可以自动刷新。
- 核心机制:stale-while-revalidate——先返回旧页面,后台异步重建新版本
- 支持时间驱动(revalidate: 60)和按需触发(revalidatePath / revalidateTag)两种模式
- 非 Vercel 平台部署时需额外适配缓存存储(如 R2、S3、KV)
ISR详解
ISR 解决了传统 SSG「内容更新必须全站重建」的痛点。在 Next.js App Router 中,通过在 fetch 或页面级别设置 revalidate 秒数,框架会在缓存过期后的下一次请求时触发后台重建。Next.js 12.1 起还支持 On-demand ISR,允许 CMS webhook 等外部事件即时清除指定页面缓存。该策略特别适合内容驱动型站点(博客、电商、文档),能在百万级页面规模下保持毫秒级 TTFB。但在 Cloudflare Workers 等边缘运行时上,ISR 的缓存层需要借助 R2 或 KV 等外部存储来替代 Vercel 的原生实现。
公式提示
revalidate = N 秒 → 每 N 秒最多重建一次;revalidatePath('/x') → 立即失效指定路径缓存。
ISR的应用场景
正式定义
一种在静态站点生成基础上叠加按需缓存失效的渲染策略,使静态页面无需全站重建即可更新内容。
应用场景
- 内容型网站(博客、文档站)发布新文章后自动刷新页面
- 电商平台商品价格/库存变动后按需重建商品详情页
- SEO 驱动的营销页在保持高性能的同时保证内容时效性
常见误区
- ISR 不是实时更新——它是「最终一致」的,首个请求仍可能拿到旧页面
- ISR 并非 Next.js 独有概念——Astro、Nuxt 等框架也有类似实现,但名称和机制不同
实际案例
📌 博客文章发布即刷新
CMS 发布新文章时调用 revalidatePath('/blog/[slug]'),下一个访问该路径的用户即可看到新内容,无需等待定时重建。
ISR的参考来源
- 文档
- 文档Vercel Docs: ISR2025-12
关于ISR的常见问题
- ISR 和 SSR 有什么区别
- SSR 每次请求都在服务端渲染页面,ISR 只在缓存过期后才重新生成,其余请求直接返回静态缓存,性能更高、服务器压力更小。
- ISR 可以在 Vercel 以外的平台使用吗
- 可以,但需要自行适配缓存存储。例如在 Cloudflare 上可通过 OpenNext + R2 实现 ISR 缓存,在 AWS 上可用 S3 + Lambda。
- ISR 适合实时数据场景吗
- 不太适合。ISR 是「最终一致」模型,适合秒级到分钟级的更新频率。需要毫秒级实时性的场景应使用 SSR 或客户端获取。