Serverless 和边缘计算对前端的影响
Serverless 不是新概念了,但随着 Vercel、Cloudflare Workers、Deno Deploy 等平台的成熟,它在 2025 年和前端开发的关系越来越密切。
Serverless 的核心概念
Serverless 不是"没有服务器",而是开发者不需要管理服务器。你只写函数,平台负责扩缩容、运维、计费。
传统部署:
买服务器 → 配置环境 → 部署代码 → 监控运维 → 扩缩容
Serverless:
写函数 → 部署 → 完事
前端相关的 Serverless 平台
Vercel
Next.js 的官方托管平台。Serverless Functions 是它的核心功能:
// app/api/hello/route.ts
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const name = searchParams.get('name') || 'World';
return Response.json({ message: `Hello ${name}` });
}
部署后自动获得 CDN、HTTPS、边缘节点。
Cloudflare Workers
在 CDN 边缘节点运行代码,延迟极低:
export default {
async fetch(request, env) {
const url = new URL(request.url);
if (url.pathname === '/api/data') {
const data = await env.KV.get('key');
return new Response(data);
}
return new Response('Not found', { status: 404 });
},
};
Cold Start 时间极短(< 5ms),适合 API 和 SSR。
Deno Deploy
Deno 官方的托管平台,和 Cloudflare Workers 类似:
Deno.serve({ port: 8000 }, (req: Request) => {
return new Response('Hello from Deno Deploy');
});
Serverless 的优势
1. 自动扩缩容
不需要预估流量。10 个用户和 10 万个用户用的是同一套代码,平台自动处理。
2. 按量计费
传统服务器:不管有没有流量,每个月固定费用。 Serverless:只有请求时才计费,空闲时不花钱。
3. 零运维
不需要管理服务器、操作系统、运行时。不用装 Nginx、配置 SSL、做安全更新。
4. 全球部署
Vercel 和 Cloudflare 在全球有几十个节点,代码部署后自动分发到所有节点。
Serverless 的限制
1. 冷启动
函数第一次调用时需要启动运行时环境,有延迟。不过现代平台(如 Vercel、Cloudflare Workers)的冷启动时间已经很短了。
2. 执行时间限制
每个函数有最大执行时间(通常 10-60 秒)。不适合长时间运行的任务。
3. 状态管理
Serverless 函数是无状态的,不能在内存里保存数据。需要外部存储(数据库、KV、Redis)。
4. 本地开发不一致
本地环境和 Serverless 环境可能有差异,调试困难。
边缘计算
边缘计算是 Serverless 的下一步。代码运行在离用户最近的 CDN 节点上。
传统 Serverless:
用户 → 最近的数据中心(可能跨省)→ 函数执行 → 响应
边缘计算:
用户 → 最近的 CDN 节点(可能在同市)→ 函数执行 → 响应
延迟可以从 100-200ms 降到 10-50ms。
边缘 SSR
Next.js 15 支持在边缘节点做 SSR:
// next.config.js
module.exports = {
experimental: {
serverActions: {
bodySizeLimit: '2mb',
},
},
};
页面在离用户最近的节点渲染,首屏速度更快。
边缘中间件
// middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export function middleware(request: NextRequest) {
// A/B 测试
const variant = Math.random() > 0.5 ? 'a' : 'b';
const response = NextResponse.next();
response.cookies.set('ab-variant', variant);
return response;
}
什么时候用 Serverless
适合:
- API 接口(CRUD、数据查询)
- SSR/SSG 页面
- Webhook 处理
- 定时任务(Cron)
- 图片处理
不适合:
- 长时间运行的任务(视频转码、大数据处理)
- 需要 WebSocket 长连接的场景
- 对启动延迟极敏感的场景
成本估算
Serverless 的计费方式:
请求数 × 执行时间 × 内存大小 = 费用
Vercel 免费额度:
- Serverless Functions: 100GB-Hrs/月
- 请求: 100万次/月
Cloudflare Workers 免费额度:
- 10万次请求/天
- 10ms CPU 时间/请求
对于中小型前端项目,免费额度通常够用。超过后费用也远低于传统服务器。
总结
Serverless 和边缘计算正在改变前端部署的方式。如果你在做 Next.js 项目,Vercel 是最简单的选择。如果需要更细粒度的控制和更低的延迟,Cloudflare Workers 值得考虑。
但 Serverless 不是万能的。对于有大量后台处理、WebSocket 需求、或者需要持久化运行的项目,传统服务器(或容器化部署)仍然是更好的选择。