核心用法
Cache Components 是 Next.js 16+ 的核心特性,通过 cacheComponents: true 启用,替代旧版 experimental.ppr。它支持在同一路由中混合三种内容类型:静态内容(构建时预渲染)、缓存内容('use cache' 标记的异步数据)和动态内容(Suspense 包裹的运行时数据)。
关键 API:
'use cache'指令:文件级、组件级、函数级三种作用域cacheLife():内置预设(minutes/hours/days/weeks/max)或自定义 {stale, revalidate, expire}cacheTag()/updateTag()/revalidateTag():标签化缓存与细粒度失效'use cache: private':合规场景下允许运行时 API
显著优点:
1. 渐进式性能优化——零配置静态优化,显式标记缓存边界
2. 自动缓存键——基于函数位置、参数、闭包变量生成,无需手动维护
3. 细粒度失效——updateTag 同请求刷新 vs revalidateTag 后台刷新
4. 迁移友好——unstable_cache 有清晰替换路径
潜在缺点:
- 不支持 Edge Runtime 和静态导出
- 运行时 API(cookies/headers/searchParams)需解耦到缓存边界外
Math.random()等值在缓存内仅执行一次,需用connection()延迟- 学习曲线:需理解缓存作用域与密钥生成规则
适合人群:
Next.js App Router 开发者,需优化 TTFB 和缓存命中率的中大型应用,特别是内容混合场景(CMS + 个性化)。
常规风险:
- 缓存穿透:未正确标记
cacheTag导致数据不一致 - 密钥冲突:闭包变量变化导致意外缓存失效
- 过度缓存:
cacheLife('max')误用造成数据陈旧