用途
该技能面向使用 Cloudflare Workers 平台进行边缘计算、无服务器函数开发和全球部署的场景。当用户提到 "cloudflare workers"、"wrangler"、"edge functions" 等关键词时使用。
主要能力
- 项目初始化与配置:使用
npm install -g wrangler && wrangler login登录,wrangler init my-worker创建项目,并在wrangler.toml中配置入口、兼容日期、变量、KV、D1、R2 等绑定。 - Worker 基础:定义
Env接口,通过export default { async fetch(request, env, ctx) }处理请求,返回Response.json、状态码 201/404 等响应。 - Wrangler CLI:
wrangler dev(本地 localhost:8787)、wrangler dev --remote、wrangler deploy、wrangler tail、wrangler secret put/list、wrangler delete。 - 路由:可手动用 map 路由,或使用 hono / itty-router 处理路径参数;示例中包含 Hono 的
app.get("/users/:id")。 - KV 存储:全局低延迟键值存储,最终一致,适合读多写少。支持
put(含expirationTtl、metadata)、get("json")、list({ prefix, limit })、delete。 - D1 数据库:边缘 SQLite,支持查询、事务、迁移。示例使用
prepare().bind().all()/run()/first()与batch()。 - R2 存储:兼容 S3 的对象存储,无出口费用。支持
put(含 httpMetadata)、get、list、delete,大文件使用createMultipartUpload()、uploadPart()、complete()。 - Durable Objects:强一致、有状态计算,每个对象有唯一 ID 和私有存储,适用于限流器、WebSocket 协调、协同编辑、会话状态。
- Workers AI:在边缘运行 ML 模型,支持文本生成(
@cf/meta/llama-3.1-8b-instruct)、嵌入(@cf/baai/bge-base-en-v1.5)、图像分类(@cf/microsoft/resnet-50)。 - 环境变量与密钥:非敏感值放
wrangler.toml的[vars],密钥用wrangler secret put API_KEY设置,均可通过env访问;支持多环境部署。 - Cron 触发:在
[triggers]配置 crons,通过async scheduled()处理定时任务,可本地用curl "http://localhost:8787/__scheduled?cron=..."测试。 - 中间件模式:CORS 头设置、
requireAuth鉴权、使用 Durable Object 做限流。 - 本地开发:
wrangler dev使用 Miniflare 运行时模拟 KV、D1、R2、Durable Objects 和缓存;支持--persist-to、--port、--remote。 - 部署:
wrangler deploy、--env、--dry-run、wrangler versions list、wrangler rollback,以及通过routes配置自定义域名。 - 常见模式:API 代理、边缘缓存、Webhook 处理(HMAC SHA-256 校验签名)、短链接服务。
使用方式
通过 Wrangler CLI 初始化项目并配置 wrangler.toml,编写 Worker 代码后使用 wrangler dev 本地开发,wrangler deploy 部署,wrangler tail 查看日志。
适用场景
需要在边缘运行服务、构建 API、存储数据(KV/D1/R2)、处理定时任务、Webhook、限流、缓存或部署无服务器逻辑的场景。
限制
资料列出资源限制差异(免费与付费):
- CPU 时间/请求:10 ms(免费)vs 30 s(Unbound)/ 50 ms(付费)
- 内存:128 MB(免费与付费相同)
- Worker 大小:1 MB(免费)vs 10 MB(付费)
- 子请求(fetch):50(免费)vs 1000(付费)
- KV 读取/日:100K(免费)vs 10M+(付费)
- KV 写入/日:1K(免费)vs 1M+(付费)
- D1 读取行/日:5M(免费)vs 50B(付费)
- D1 写入行/日:100K(免费)vs 50M(付费)
- R2 Class A 操作/月:1M(免费)vs $4.50/M(付费)
- R2 存储:10 GB(免费)vs $0.015/GB-mo(付费)
- Cron 触发器:3(免费)vs 3+(付费)
- 请求体大小:100 MB(免费与付费相同)
关键约束:不支持原始 TCP/UDP socket(使用 WebSocket 或 Tunnels);提供 crypto.subtle;Node.js 内置模块通过 nodejs_compat 标志部分支持;全局变量在 isolate 内持久但不跨冷启动;ctx.waitUntil() 可在响应后延长执行以进行后台工作。