内容提要
Vercel 新增 skipMiddlewareRequestBody 选项,允许路由中间件跳过接收客户端请求体,以减少 Fast Origin Transfer 用量并改善首字节时间,尤其适合大请求体。仅在中间件不读取请求体时启用,Vercel Functions 和重写目标仍能收到请求体。可在 vercel.json 或 vercel.ts 中设为 true,需重新部署生效,默认关闭。
延伸解读
启用条件与风险
该选项仅适用于路由中间件不读取请求体的场景。如果中间件逻辑依赖请求体内容,启用后可能导致功能异常。因此,在开启前需确认中间件没有解析或使用请求体,否则应保持默认关闭。
对下游处理的影响
跳过中间件接收请求体后,Vercel Functions 和重写目标仍能正常收到请求体。这意味着你可以在这些下游环节中读取和处理请求体,而不会丢失数据。因此,将请求体处理逻辑移至函数或重写目标是一种可行的适配方式。
配置与生效方式
可在 vercel.json 或 vercel.ts 中将 skipMiddlewareRequestBody 设为 true。修改后需要重新部署项目才能生效。该选项默认值为 false,因此现有项目不会自动改变,只有显式启用才会应用。
Q&A
Vercel 的 skipMiddlewareRequestBody 选项是什么?
skipMiddlewareRequestBody 是 Vercel 新增的一个选项,允许路由中间件跳过接收客户端请求体,从而减少 Fast Origin Transfer 用量并改善首字节时间。
启用 skipMiddlewareRequestBody 有什么好处?
它可以减少中间件调用产生的 Fast Origin Transfer 用量,并改善首字节时间,尤其对请求体较大的请求效果明显。
在什么情况下应该启用 skipMiddlewareRequestBody?
仅当你的路由中间件不读取请求体时才应启用。Vercel Functions 和重写目标仍然会收到请求体,因此可以在那里读取和处理。
如何在 vercel.json 中配置 skipMiddlewareRequestBody?
在项目的 vercel.json 文件中添加 "skipMiddlewareRequestBody": true 即可。
如果使用 TypeScript 配置文件,如何设置 skipMiddlewareRequestBody?
在 vercel.ts 文件中添加 skipMiddlewareRequestBody: true 到导出的配置对象中。
启用 skipMiddlewareRequestBody 后需要重新部署吗?默认值是什么?
需要重新部署项目才能使更改生效。该选项默认值为 false,因此现有项目除非手动启用,否则保持不变。