作者发现 Cloudflare KV 存储用量暴涨至 3.59GB-month,排查后定位为 OpenNext 的 KV 增量缓存缺陷:kv.put() 未设置 expirationTtl,缓存永久留存;随机 Build ID 使每次部署生成新缓存,构建期全量写入,旧版本数据成为僵尸,最终堆积 24GB。作者通过新建 KV 命名空间、自定义带 7 天 TTL 的缓存适配器、修补构建期 bulk put 三步解决。
作者在Cloudflare Workers上部署Next.js+OpenNext网站时,遭遇两大计费事故:R2读操作达787万次,因RegionalCache后台偷读及CDN TTL过短放大;Worker请求超1000万次,因Next.js 16缓存拦截Bug导致RSC预取死循环。通过关闭后台更新、拉长缓存、禁用拦截及优化prefetch解决,并总结出缓存配置、预取分级等最佳实践。
Next.js 16.2引入了稳定的适配器API,旨在确保在各个平台上的良好运行。通过与OpenNext、Netlify等合作,开发了共享测试套件和验证适配器,促进跨平台兼容性。适配器API提供应用版本化描述,支持多种功能,确保开发者在不同基础设施上获得一致体验。
Cloudflare为OpenNext推出的适配器已更新至1.0.0-beta版本,增强了对Next.js的支持,包括缓存、预渲染和图像处理功能,未来将兼容Windows和边缘运行时,方便开发者在Cloudflare上部署Next.js应用。
OpenNext是一个开源项目,旨在解决Next.js与基础设施的集成问题。尽管Next.js功能强大,但在自托管于不同云平台时,开发者面临诸多挑战。OpenNext通过文档和社区支持,帮助开发者在AWS等平台上更好地使用Next.js,促进开发者与平台的合作。
完成下面两步后,将自动完成登录并继续当前操作。