内容提要
Vercel最近推出了字节码缓存功能,旨在显著减少冷启动时间。该功能基于新的Rust核心,已在Node.js 20+的Vercel Functions中默认启用,全球冷启动时间减少了60%。此改进对加载大量JavaScript的函数影响显著,未来将扩展对ESM的支持。
延伸解读
从实验到默认:稳定性已验证
字节码缓存最初是实验性功能,经过稳定性与性能验证后,现已转为稳定并成为 Node.js 20+ Vercel Functions 的默认配置。这意味着开发者无需手动开启,即可获得冷启动优化。Vercel 表示全球冷启动时间减少高达 60%,超出初步基准和观察结果,说明该优化在真实环境中已具备可靠表现。
谁受益最明显:大体积 JS 函数
该优化对加载大量 JavaScript 的函数影响显著,而较小函数提升有限。这是因为字节码缓存主要减少解析和编译 JS 的开销,函数依赖的代码量越大,节省的时间越明显。因此,如果你的函数打包体积较大,升级到 Node.js 20 并保持 CommonJS 格式,可能获得更明显的冷启动改善。
当前限制:仅限 CommonJS,ESM 待支持
字节码缓存自动启用在所有运行 Node.js 20 并使用 CommonJS 的函数上,例如 Next.js 项目。目前尚未覆盖 ESM,Vercel 正在扩展支持以提升兼容性。如果你的项目使用 ESM,暂时无法享受该优化,需关注后续更新或评估是否切换模块格式。
Q&A
字节码缓存功能的主要目的是什么?
字节码缓存功能旨在显著减少冷启动时间。
字节码缓存是基于什么技术开发的?
字节码缓存基于新的Rust核心开发。
使用字节码缓存后,冷启动时间减少了多少?
全球冷启动时间减少了60%。
字节码缓存功能在哪些版本的Node.js中默认启用?
字节码缓存功能在Node.js 20+的Vercel Functions中默认启用。
字节码缓存对加载大量JavaScript的函数有什么影响?
对加载大量JavaScript的函数影响显著,较小的函数影响较小。
未来字节码缓存功能会扩展到哪些方面?
未来将扩展对ESM的支持,以实现更广泛的兼容性。