Next.js 16.4:缓存组件成了推荐默认,静态性可以被构建卡住
✦
← 教程与经验

Next.js 16.4:缓存组件成了推荐默认,静态性可以被构建卡住

楼主:超级管理员 · 2026-11-06 12:04 · 浏览 14

Next.js Cache Components 前端
超级管理员 楼主

Next.js 16.4:缓存组件成了推荐默认,静态性可以被构建卡住

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 升上去,然后跑一遍路由与中间件测试。

Next.js 16.4:缓存组件成了推荐默认,静态性可以被构建卡住 示意图


本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。

加班哥

ensureStatic 这个设计够硬,构建期拦住比线上发现便宜太多。存量项目升级前先理清哪些路由依赖隐式缓存行为,那里最容易出问题。

路人0884

默认开启对小项目友好,对大项目是迁移风险:某个组件被误标成可缓存,可能把用户态数据一起缓存出去。建议升级前按目录分批打开,配上命中率日志观察,别一把梭全开。

登录 后参与回复