默认启用的无服务器函数字节码缓存

默认启用的无服务器函数字节码缓存

💡 原文英文,约300词,阅读约需1分钟。
📝

内容提要

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的支持,以实现更广泛的兼容性。

🏷️

标签

➡️

继续阅读