内容提要
Vercel Flags SDK 更新:冷启动时立即加载并解析随部署打包的 flags 数据文件,并利用每次调用携带的数据文件版本号免去网络请求校验,使 p75 冷启动初始化从 70 毫秒降至 10 毫秒,约快 7 倍;初始化后读取延迟 p99 低于 1 毫秒。用量上报改由 Vercel 运行时处理,不再延长函数运行时间。需升级 @flags-sdk/vercel 至 1.5.3 以上并重新部署。
延伸解读
冷启动优化的实现机制
Vercel Flags SDK 通过两项改动加速冷启动:一是客户端创建时立即加载并解析随部署打包的 flags 数据文件,使首次读取 flag 前数据已就绪;二是每次函数调用携带当前数据文件版本号,SDK 无需网络请求即可校验本地数据是否最新。这消除了初始化阶段的网络等待,是冷启动时间大幅下降的关键。
性能提升的实际影响
根据内部测试,p75 冷启动 SDK 初始化时间从 70 毫秒以上降至 10 毫秒,约快 7 倍;初始化后,无论冷启动还是热调用,flag 读取延迟 p99 均低于 1 毫秒。这意味着对延迟敏感的请求能更快进入业务逻辑,减少因 flag 初始化导致的响应延迟,尤其有利于高频调用的函数。
用量上报不再延长函数运行时间
此前 SDK 使用 waitUntil 进行用量上报,导致函数在响应发送后仍继续运行,增加函数持续时间。现在用量事件直接传递给 Vercel 运行时处理,上报不再计入函数运行时间。这有助于降低因上报产生的额外计费时长,并让函数生命周期更干净地结束。
升级注意事项
要获得上述改进,需将 @flags-sdk/vercel 升级至 1.5.3 或更高版本,并重新部署应用。升级命令为 pnpm add @flags-sdk/vercel@latest。未升级或未重新部署的项目不会自动应用新机制,因此开发者应检查依赖版本并确保部署流程包含更新后的包。
Q&A
Vercel Flags SDK 冷启动速度提升了多少?
p75 冷启动初始化时间从 70 毫秒降至 10 毫秒,约快 7 倍。
Vercel Flags SDK 如何实现更快的冷启动?
SDK 在客户端创建时立即加载并解析随部署打包的 flags 数据文件,并且每次函数调用都携带当前数据文件版本号,从而无需网络请求即可校验数据文件是否最新。
初始化后读取 flag 的延迟是多少?
在冷启动和热启动调用中,p99 的 flag 读取延迟低于 1 毫秒。
用量上报还会延长函数运行时间吗?
不会。SDK 现在将用量事件传递给 Vercel 运行时处理,因此上报不再增加函数运行时间。
如何升级以使用这些改进?
将 @flags-sdk/vercel 升级到 1.5.3 或更高版本,并重新部署应用。
之前用量上报是如何影响函数时长的?
之前 SDK 使用 waitUntil 进行用量上报,导致函数在响应发送后继续运行,从而延长了函数时长。