You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中Incremental Static Regeneration的revalidate字段为何每次刷新都更新?

Next.js ISR缓存不生效问题排查

核心原因:开发环境特性 + 对fallback与revalidate逻辑的误解

你的问题主要出在两个点上:

  1. 开发环境会跳过静态缓存
    Next.js的开发模式(npm run dev)为了方便调试,会强制每次请求都重新执行getStaticProps,完全忽略revalidate配置的缓存时间。你看到每次刷新message都更新,是开发环境的正常行为,ISR的缓存逻辑只在生产环境生效。

  2. fallback: 'blocking'的运行逻辑
    当你设置paths: [] + fallback: 'blocking'时:

  • 生产环境下,首次访问页面时,服务器会运行getStaticProps生成页面并缓存;
  • 接下来的10分钟内,所有请求都会直接返回缓存的页面,不会重新执行getStaticProps;
  • 10分钟后,如果有新的请求进来,服务器会在后台重新生成页面,之后的请求就会返回新的缓存内容。

验证步骤

要确认ISR是否正常工作,必须在生产环境测试:

  • 执行npm run build构建生产包
  • 执行npm start启动生产服务器
  • 访问页面,记录显示的时间戳;10分钟内反复刷新,时间戳应该保持不变;10分钟后再刷新,会显示新的时间戳。

额外说明

如果生产环境下还是出现每次刷新都更新的情况,需要检查:

  • 是否有CDN或服务器层面的缓存配置,覆盖了Next.js的ISR缓存
  • 确保没有在代码中加入强制刷新的逻辑(比如自定义headers禁用缓存)

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:47:22