部署 Cloudflare Workers
Cloudflare 全球边缘 serverless 计算,0ms 冷启动,KV、R2 和 D1。
边缘进阶
为什么
Cloudflare Workers 运行于 300+ 位置,0ms 冷启动(V8 隔离,非容器)。KV 全球最终一致存储,R2 兼容 S3 无出口费,D1 边缘 SQLite。
Cloudflare 边缘网络覆盖 330+ 城市,全球 p95 延迟低于 50ms。边缘函数相比源服务器将 TTFB 降低 60-80%,Akamai 报告 2024 年 40% 的企业使用边缘计算。
何时使用
边缘 API、auth 代理、A/B 测试和地理路由用 Workers。长时任务(>30s CPU)或重计算避免。
如何做
1. 编写 — src/index.ts,export default { fetch() {} }
2. 配置 — wrangler.toml 配 name、bindings、vars
3. 开发 — npx wrangler dev 本地测试
4. 部署 — npx wrangler deploy
5. KV — kv namespace create,wrangler.toml 绑定
6. R2 — r2 bucket create,兼容 S3 对象存储
7. D1 — d1 create,边缘 SQLite 数据库
示例
// src/index.ts
export default {
async fetch(req: Request, env: Env): Promise<Response> {
const country = req.cf?.country || "unknown";
const count = parseInt(await env.KV.get("count") || "0") + 1;
await env.KV.put("count", count.toString());
return Response.json({ country, count });
},
};
// wrangler.toml
name = "my-worker"
main = "src/index.ts"
compatibility_date = "2024-01-01"
[[kv_namespaces]]
binding = "KV"
id = "abc123"
常见问题
- ⚠Worker 超 1MB — 包过大,用动态导入或拆分多 Worker
- ⚠KV 最终一致 — 写入最多 60s 全球传播,用 cache API 即时读
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓所有配置用 wrangler.toml — 版本控制,非仅面板设置
- ✓用 req.cf 获取地理数据 — 国家、城市、时区无需外部 API
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求