太长不看(TL;DR): Cloudflare Workers 和 AWS Lambda@Edge 均在边缘节点执行代码,但在冷启动、定价和平台能力上存在显著差异。Workers 提供低于 5ms 的冷启动时间和慷慨的免费额度;而 Lambda@Edge 则提供了与 AWS 服务的原生集成。如果你是首次评估边缘计算方案,可以先阅读我们的 Cloudflare Workers 介绍。详细对比请访问 tanstackship.com。
简介
边缘计算(Edge computing)将代码执行推向离用户更近的位置,把延迟从数百毫秒降低至个位数。Cloudflare Workers 和 AWS Lambda@Edge 是目前最主流的两大平台。选择哪一个取决于你当前的云生态系统、性能需求以及项目预算。想深入了解边缘架构为何对降低延迟至关重要,请参考 降低首字节时间(TTFB)。
架构对比
| 特性 | Cloudflare Workers | AWS Lambda@Edge |
|---|---|---|
| 运行环境 | V8 Isolates (独立的 JS 上下文) | Firecracker microVMs |
| 冷启动 | <5ms (典型值) | 50-200ms (典型值) |
| 内存限制 | 128 MB (免费版), 最高至 128 MB | 128 MB 到 10,240 MB |
| CPU 时间 | 30s (免费版), 60s (捆绑版) | 5s (查看者请求), 30s (源站请求) |
| 支持语言 | JavaScript, TypeScript, WASM | Node.js, Python, Go 等 |
| 请求体大小 | 100 MB (免费版) | 1 MB (查看者), 30 MB (源站) |
| 部署区域 | 330+ 个位置 | 13+ 个 CloudFront 边缘位置 |
冷启动分析
Request # Workers (ms) Lambda@Edge (ms)
1 2 187
2 1 12
3 1 8
4 2 195 (scale event)
5 1 9
Average 1.4ms 82.2ms
P99 4ms 412ms
定价对比
| 场景 | Cloudflare Workers (1000 万次请求) | Lambda@Edge (1000 万次请求) |
|---|---|---|
| 计算成本 | $0.50 (包含在免费额度内) | $6.00 (前 1000 万次免费) |
| 额外请求成本 | 每百万次 $0.30 | 每百万次 $0.60 |
| 执行时间成本 | 已包含 | 每 128MB-秒 $0.00005 |
| 免费额度 | 每天 10 万次请求 | 每月 100 万次请求 |
| 月度成本 (1 亿次请求) | ~$27 | ~$60-100 |
代码示例
// Cloudflare Worker
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url)
const cacheKey = `page:${url.pathname}`
// 检查 KV 缓存
const cached = await env.KV.get(cacheKey, 'json')
if (cached) {
return Response.json(cached, {
headers: { 'X-Cache': 'KV' }
})
}
// 从源站获取数据
const response = await fetch(`https://origin.example.com${url.pathname}`)
const data = await response.json()
// 在 KV 中进行异步缓存
env.KV.put(cacheKey, JSON.stringify(data), { expirationTtl: 300 })
return Response.json(data)
}
}
// AWS Lambda@Edge (源站请求)
exports.handler = async (event) => {
const request = event.Records[0].cf.request
const response = event.Records[0].cf.response
// 添加安全请求头
response.headers['strict-transport-security'] = [{
key: 'Strict-Transport-Security',
value: 'max-age=63072000; includeSubdomains; preload'
}]
response.headers['x-content-type-options'] = [{
key: 'X-Content-Type-Options',
value: 'nosniff'
}]
return response
}
开发者体验
| 评估维度 | Cloudflare Workers | AWS Lambda@Edge |
|---|---|---|
| 本地开发 | wrangler dev (即时生效) | sam local 或 amplify mock |
| 部署速度 | wrangler deploy (2-3s) | CloudFormation / CDK (数分钟) |
| 调试方案 | 控制台 + tail 日志 | CloudWatch Logs |
| TypeScript | 一等公民支持 | 通过 esbuild/webpack |
| 测试支持 | workerd (本地运行环境) | Docker 或模拟 AWS |
方案选型指南
| 适用场景 | 推荐平台 | 选用原因 |
|---|---|---|
| 全新启动的 SaaS 项目 | Cloudflare Workers | 成本低、冷启动快、开发者体验简单纯粹 |
| 已重度依赖 AWS | Lambda@Edge | 能与 CloudFront、S3、DynamoDB 实现原生无缝集成 |
| 高并发 API 接口 | Cloudflare Workers | 在 330+ 个节点上提供低于 5ms 的冷启动性能 |
| 复杂的数据处理链路 | Lambda@Edge | 拥有更高的 CPU 执行时间和内存上限 |
| 开发者工具平台 | Cloudflare Workers | 提供 Workers for Platforms 与 Durable Objects |
| 需要 AWS 合规审计的企业 | Lambda@Edge | 沿用 AWS 体系的 SOC 2 和 HIPAA 认证 |
总结
Cloudflare Workers 在冷启动性能、全球节点分布与开发者体验方面表现出众,是构建对延迟敏感的 SaaS 应用程序的理想之选。如果你的基础设施架构已与 AWS 深度绑定,Lambda@Edge 则是非常合适的选择。对于绝大多数新起步的 SaaS 项目来说,Cloudflare Workers 能够以更低的成本提供更出色的性能表现。
想要进一步了解 Workers 独树一帜的运行环境原理,请查阅 Cloudflare Workers:JavaScript Runtime 与 V8 Isolates 对比。如果在内容分发层面上需要做架构规划,我们的 CDN 选择与配置指南 可以为你提供关于边缘服务的更全局视角的参考。