SuperAPI AI 工具集

cloudflare-workers

部署与运维

查看项目

更新于 10-15 10:58

技能介绍

用途

该技能面向使用 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() 可在响应后延长执行以进行后台工作。