边缘中间件

边缘中间件拦截发送到您的无服务器函数的请求。它在 Vercel 的全球 边缘位置上部署,并在靠近用户源的位置运行您的服务器端代码。它在请求到达边缘缓存之前运行。因此,您可以在从缓存中获取请求或在无服务器函数中处理请求之前更新请求。边缘中间件在 Vercel 的边缘运行时上运行,该运行时是一个 V8 JavaScript 引擎

边缘函数

边缘函数是无服务器函数,它们在 Vercel 的边缘位置靠近用户的起点执行。就像边缘中间件一样,它们在边缘运行时上运行,该运行时是一个 V8 JavaScript 引擎。由于其运行时,它比常规无服务器函数具有更短的冷启动时间。与边缘中间件相反,边缘函数在缓存之后运行

边缘中间件和边缘函数对比:

边缘中间件在后端逻辑之前运行,而边缘函数则定位为后端逻辑

你可以使用边缘函数 代替 无服务器函数, 同时你可以将边缘中间件与 无服务器函数一起使用

边缘函数是无服务器函数的替代品, 边缘中间件帮助您拦截到达无服务器函数的请求

两者都在相同的基础设施(Vercel Edge)和运行时(Vercel Edge Runtime)上运行

使用场景:

功能标志和A/B测试:您可以为不同的用户或位置制作具有不同版本内容的实验。使用Edge运行时,您可以更快地路由您的用户

身份验证:可以在边缘网络中最接近用户的边缘处验证请求,而不是在服务器端进行身份验证。这样可以加快您的登录速度

本地化:Edge运行时为您提供有关用户的地理数据(国家,地区,城市),因此您可以针对不同的国家限制或更新您的内容

使用限制:

不支持原生的 Node.js API(如 process、path 或 fs)

不支持基于TCP/UDP的连接

请求的最大大小为1MB,函数的大小为4MB,包括所有捆绑的代码

边缘函数与无服务器函数对比:

边缘函数更便宜,可以在全球范围内提供低延迟。此外,它们没有冷启动问题,因此更快。但是它们有更多限制,例如不支持Node API,并且有更严格的代码大小和超时限制


Serverless Function

Edge Function

Maturity

GA

GA

Fast Start

Cold start

No cold start (faster)

Global low latency

No

Yes

Regions

Single

Edge (many)

Max exec time

60s (pro)

5s

Max code size

50MB

1MB

Max memory

1024MB

128MB

Price

$40 per 100GB hours

$0.65 per 1 million execution

Vercel 的边缘函数和边缘中间件是非常好的产品,它们扩展了无服务器函数的功能

取消冷启动并在任何地方提供低延迟使它们优于单区域无服务器函数

但它们仍然有一些限制,限制了它们只能用于某些特殊用例

看到这些产品如何发展以及开发人员是否会采用它们进行更多用例将是令人兴奋的