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

Next.js请求记忆、数据缓存等服务器存储目录及缓存疑问

Next.js 缓存相关问题解答

1. 服务器端缓存的存储目录

Next.js 生产构建后的缓存,大多不会以可读文件形式暴露在 /build 目录中。静态缓存(HTML、RSC payload、静态数据)会被编译打包到 /build 的子目录(如 /app、/static),但都是经过优化的结构化或二进制文件,无法直接读取原始缓存内容。

你看到的 /build/fetch-cache 是构建阶段的临时辅助缓存,仅用于 next build 过程中复用 fetch 请求,并非生产运行时的最终缓存。生产环境中,缓存存储位置取决于部署方式:Vercel 等平台会用分布式缓存服务,本地自建服务器默认用内存缓存,不会在 /build 生成持久化的缓存文件——这也是官方文档不明确目录的原因,不同部署场景差异极大。

2. /build/fetch-cache 不含 fetch 返回值 50 的原因

fetch-cache 只缓存构建阶段执行的可缓存请求:

  • 只有在 next build 期间运行的 fetch 请求(比如静态页面的数据预取),且设置了默认的 cache: 'force-cache'、请求为 GET 类型且带有合法缓存头时,才会被存入该目录;
  • 如果你的 fetch 请求是运行时触发的(比如动态路由、用户交互后执行),构建阶段不会执行这个请求,自然不会出现在 fetch-cache 中;
  • 若请求内容带有动态特性(如动态参数、无缓存头),Next.js 也不会在构建阶段缓存它。

3. 开发服务器的缓存机制

Next.js 开发服务器(next dev)确实有缓存,但逻辑和生产环境不同:

  • RSC payload 和组件渲染结果默认不缓存,确保代码修改后能实时刷新;
  • fetch 请求默认遵循浏览器缓存规则,也可通过 cache 选项手动控制,但缓存仅存在内存中,重启 dev 服务器就会清空;
  • 开发服务器会缓存编译后的文件(如 .js、.css),但这是构建缓存,和数据缓存不是一回事。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:32:40