关于 edge-computing
面向开发者的边缘计算参考技能,涵盖运行时、数据存储和实现模式的比较,并说明平台限制与常见架构做法。
主要功能
- 01运行时与平台比较
- 02边缘数据库选项
- 03渲染、路由与缓存模式
- 04速率限制与 A/B 测试
- 05运行时限制与数据库建议
适用场景
- 01为应用选择边缘运行时
- 02为边缘工作负载选择数据库
- 03设计地理路由与缓存
- 04部署前检查运行时限制
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ travisjneuman/ .claude --skill edge-computing安装后在 Claude Code 中输入/edge-computing确认已加载。
详细介绍
边缘计算
平台
| 平台 | 运行时 | 冷启动 | 限制 |
|---|---|---|---|
| Cloudflare Workers | V8 isolates | ~0ms | 128MB,30s CPU |
| Deno Deploy | V8 isolates | ~0ms | 512MB,50ms CPU |
| Vercel Edge Functions | V8 isolates | ~0ms | 128MB,25s |
| AWS Lambda@Edge | Node.js | ~100ms | 128MB,5s(查看者) |
| Bun | JavaScriptCore | 不适用(服务器) | 无硬性限制 |
Cloudflare Workers
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url);
// KV storage
const cached = await env.KV.get(url.pathname);
if (cached) return new Response(cached, { headers: { 'Cache-Control': 'max-age=60' } });
// D1 database
const { results } = await env.DB.prepare('SELECT * FROM users WHERE id = ?')
.bind(url.searchParams.get('id'))
.all();
// Durable Objects for state
const id = env.COUNTER.idFromName('global');
const obj = env.COUNTER.get(id);
const count = await obj.fetch(request);
return new Response(JSON.stringify(results));
}
};
边缘数据库
| 数据库 | 类型 | 最适合 |
|---|---|---|
| Cloudflare D1 | SQLite | 原生适配 Workers,在边缘运行 SQL |
| Turso | libSQL (SQLite) | 多区域副本、嵌入式 |
| Cloudflare KV | 键值 | 简单缓存、配置 |
| Durable Objects | 有状态 | 实时处理、协调、计数器 |
| Upstash Redis | Redis | 边缘限流、会话 |
Deno Deploy
Deno.serve(async (req: Request) => {
const kv = await Deno.openKv();
const url = new URL(req.url);
if (req.method === "POST") {
const body = await req.json();
await kv.set(["items", crypto.randomUUID()], body);
return new Response("Created", { status: 201 });
}
const entries = kv.list({ prefix: ["items"] });
const items = [];
for await (const entry of entries) items.push(entry.value);
return Response.json(items);
});
模式
- 边缘侧渲染: 在边缘执行 SSR,实现全球范围内 <50ms 的 TTFB
- 智能路由: 基于
request.cf.country的地理感知请求路由 - 边缘缓存: 使用 Cache API 进行精细控制,并采用 stale-while-revalidate
- 限流: 使用 Durable Objects 或 Upstash 实现滑动窗口计数器
- A/B 测试: 在边缘使用功能标志,无需往返源站
- 图像优化: 在边缘按需转换(Cloudflare Images、Imgproxy)
限制与注意事项
- V8 isolate 运行时不支持 Node.js API(fs、net 等)
- 不支持原生模块或二进制文件(计算密集型工作可使用 WASM)
- 每个请求的 CPU 时间有限——将繁重工作转移到队列
- isolate 的冷启动时间近乎为零,但 Lambda@Edge 确实存在冷启动
- 数据库连接:使用基于 HTTP 的客户端,而非 TCP 连接池
评论
支持 Markdown