Skip to content

NextJS中文文档 - Incremental Static Regeneration

示例

增量静态再生 (ISR) 使你能够:

  • 更新静态内容,而无需重建整个站点
  • 通过为大多数请求提供预渲染的静态页面来减少服务器负载
  • 确保自动为页面添加适当的 cache-control
  • 处理大量内容页面,而不会导致 next build 时间过长

以下是一个简单示例:

这个示例的工作原理如下:

  1. next build 期间,生成所有已知的博客文章(本示例中有 25 个)
  2. 对这些页面的所有请求(例如 /blog/1)都被缓存并立即响应
  3. 60 秒过后,下一个请求仍将显示缓存的(过时的)页面
  4. 缓存被失效,并在后台开始生成页面的新版本
  5. 一旦成功生成,Next.js 将显示并缓存更新后的页面
  6. 如果请求了 /blog/26,Next.js 将按需生成并缓存此页面

参考

示例

处理未捕获的异常

自定义缓存位置

你可以配置 Next.js 缓存位置,如果你想将缓存的页面和数据持久化到耐用存储,或者在多个容器或 Next.js 应用程序实例之间共享缓存。了解更多

故障排除

在本地开发中调试缓存数据

如果你使用的是 fetch API,可以添加额外的日志记录来了解哪些请求被缓存或未缓存。了解更多关于 logging 选项的信息

jsx
module.exports = {
  logging: {
    fetches: {
      fullUrl: true,
    },
  },
}

验证正确的生产行为

要验证你的页面在生产环境中是否正确缓存和重新验证,可以通过运行 next build 然后运行 next start 在本地测试生产版 Next.js 服务器。

这将允许你测试 ISR 行为,就像在生产环境中一样。要进一步调试,请将以下环境变量添加到你的 .env 文件中:

bash
NEXT_PRIVATE_DEBUG_CACHE=1

这将使 Next.js 服务器控制台记录 ISR 缓存命中和未命中。你可以检查输出,查看在 next build 期间生成了哪些页面,以及在按需访问路径时页面如何更新。

注意事项

平台支持

部署选项支持状态
Node.js 服务器
Docker 容器
静态导出
适配器平台特定

了解如何在自托管 Next.js 时配置 ISR

版本历史

版本变更
v14.1.0自定义 cacheHandler 稳定版。
v13.0.0引入 App Router。
v12.2.0Pages Router:按需 ISR 稳定版
v12.0.0Pages Router:添加机器人感知 ISR 回退
v9.5.0Pages Router:稳定版 ISR 引入

🎉有任何问题,欢迎联系我

WeChat QR Code
WeChat
QQ QR Code
QQ

赣ICP备2023003243号