Next.js 16.4 最值得注意的不是新 API,而是一个态度的转变:官方现在建议所有 Next.js 应用启用 Cache Components,新建项目默认打开,并计划在 17 里变成默认行为。
为什么要做这件事
App Router 最被诟病的一点是缓存太隐式。一个页面到底静态还是动态、fetch 的默认缓存策略是什么、什么时候会重新验证,这些问题在过去需要查文档加试错才能搞清楚。隐式缓存的代价不是性能,是意外:你以为在跑动态逻辑,实际上拿到的是十分钟前的数据。
Cache Components 把这套规则显式化,用声明的方式标注哪部分是缓存的、哪部分必须实时。这跟数据库事务隔离级别的演进逻辑一样,从默认行为变成显式契约,可预测性换掉了一点便利。
同月还有两个必须处理的安全更新
10 月 14 日的更新修了两个未授权 RCE:一个在 use cache 相关函数返回多个 typed array 的场景,官方说没有缓解措施,只能升级;另一个在 Image Optimization API 处理 SVG 时触发,来自上游图像库,临时缓解是确保 sharp 解析到 0.35.5 以上。此外还有一个影响 App Router 且至少含一个 Server Action 应用的高危 DoS。修复版本是 16.4.1 和 15.5.28。
日历上要标一天
11 月 3 日有预定的安全版本,覆盖七个中危问题。建议提前准备升级窗口,别等公告出来再手忙脚乱。
顺带一提
16.4 还把 Turbopack 的磁盘缓存小了 20% 到 25%,CSS Module 的生产类名更短,Rust 版 React Compiler 加了快速跳过路径,官方数据是内存少 30%、编译快 15%。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。