Next.js 16.4 发布,Cache Components 进入成熟阶段,官方建议所有 Next.js 应用都用,create-next-app 默认开启,到 v17 会成为默认模型。部分预取也被纳入这个模型。
这个模型想解决什么
App Router 时代最让人困惑的是「这段代码什么时候跑」。缓存、动态、流式混在一起,出问题只能靠猜。Cache Components 试图把「哪些是可缓存的静态部分、哪些是运行时动态部分」变成显式声明,而不是靠一堆配置项推断。
两个具体的新能力
一是静态保证:export const ensureStatic,如果动态内容混进了本该静态的路由,构建直接失败。这个设计很硬,但有用。缓存穿透类的线上事故,很多就是「以为静态,其实动态」,构建期拦住比线上发现便宜得多。
二是预取控制:await navigation() 可以把某些内容排除在预取之外。预取一切会导致流量放大,尤其是带用户态数据的接口,这条给了明确的排除手段。
升级要注意的
新模型在 create-next-app 里默认开,意味着新项目一上来就是这个范式。存量项目升级前,先梳理哪些路由依赖隐式缓存行为,这些地方最容易出问题。
顺带一提安全
同期 Next.js 发布了安全补丁版本,Hono、Fastify、Better Auth 也各有修复。Better Auth 这一批里有一条值得单独注意:OAuth 提供方把 email_verified 传成字符串 false 时被当成已验证,涉及 Cognito 与 Microsoft Entra ID。这种类型混淆类漏洞,靠测试很难发现,只能靠及时升级。
建议
暴露在公网的服务,本周就把 Next.js、Hono、Fastify 升上去,然后跑一遍路由与中间件测试。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。