用途:在 Next.js 16+ 中启用 Cache Components,实现部分预渲染(PPR),让同一条路由混合静态、缓存与动态内容。
主要能力:开启方式为在 next.config.ts 中设置 cacheComponents: true,替代旧的 experimental.ppr。内容分为三类:静态同步代码在构建时预渲染;缓存内容通过 'use cache' 指令配合 cacheLife 控制生命周期;动态内容用 Suspense 包裹以流式输出。缓存指令可作用于文件、组件或函数级别,支持默认、remote、private 等配置,cacheLife 支持内置档位(default、minutes、hours、days、weeks、max)或内联 stale、revalidate、expire。可用 cacheTag 打标签,updateTag 在同一请求内立即失效,revalidateTag 走后台重新验证。缓存键由构建 ID、函数位置、可序列化参数与闭包变量自动生成。
使用方式与限制:不能在 use cache 内访问 cookies、headers 或 searchParams,需在外部取值后作为参数传入;例外是 'use cache: private'。不支持 Edge 运行时与静态导出,需 Node.js 服务端。Math.random、Date.now 等非确定性值在 use cache 内只在构建时执行一次,需请求时随机可调用 connection() 延后。迁移方面,experimental.ppr 改为 cacheComponents,dynamic='force-static' 改为 'use cache' + cacheLife('max'),revalidate=N 改为 cacheLife({ revalidate: N }),unstable_cache 改为 use cache,不再需要手动键,标签改用 cacheTag,重验证改用 cacheLife。