用途
该技能用于构建和部署 Cloudflare Workers 边缘函数,核心工具为 Wrangler CLI。适用于在边缘提供轻量 API 与微服务、在源站前添加中间件(鉴权、限流、响应头注入)、按计划运行 Cron 任务而无需维护基础设施、处理 webhook、图片变换或 A/B 测试逻辑,以及从 KV、D1、R2 等存储绑定读取动态内容。
前置条件
- 本地安装 Node.js 18 及以上版本。
- 安装 Wrangler CLI:npm install -g wrangler。
- 拥有 Cloudflare 账户(资料称免费计划支持每日 100,000 请求)。
- 完成认证:wrangler login 或设置 CLOUDFLARE_API_TOKEN。
资料特别提示:应核实实际账户的 Node/Wrangler 支持情况、计划配额与 CPU 限制,文中历史数字不构成当前权益保证;部署、回滚或远程开发前需明确目标账户、环境与路由。
使用方式
快速开始:
npm create cloudflare@latest my-worker
cd my-worker
npx wrangler login
npx wrangler dev
npx wrangler deploy
常用 Wrangler 命令包括:wrangler dev --remote(在 Cloudflare 执行并可能影响绑定的远程资源)、按环境部署 wrangler deploy --env staging、设置密钥 wrangler secret put、列出密钥 wrangler secret list、实时查看日志 wrangler tail(可加 --status=error --search="timeout" 过滤)、查看部署版本 wrangler deployments list、回滚 wrangler rollback。
配置示例(wrangler.toml)包含 name、main、compatibility_date、compatibility_flags、routes、[vars] 及 [env.staging] 覆盖配置,也可启用 workers_dev 子域名。
主要能力
- 基础 API 路由:基于 URL pathname 分发请求,支持 JSON 响应,并用 ctx.waitUntil 在响应返回后执行后台日志上报。
- KV 计数器示例:以 CF-Connecting-IP 为键、60 秒窗口、最大 100 次请求的近似限流,超出返回 429 与 Retry-After。资料强调这是近似方案,非强制级限流器,安全场景应使用权威限流器。
- KV 存储绑定:通过 wrangler.toml 的 kv_namespaces 绑定,支持带 TTL 写入、读取 json、按前缀 list、删除;并提供 kv namespace create/list 与 kv key put/get/list 等 CLI 操作。
- D1 数据库绑定:通过 d1_databases 绑定,支持参数化查询、插入、批量执行;并提供 d1 create/list/execute 等 CLI 操作。
- Cron 触发:在 [triggers] 中声明 crons,在 scheduled 处理器中按 event.cron 分支,用 ctx.waitUntil 执行清理或周报生成。注意资料指出第三个 cron 没有对应处理器。
- Durable Objects:定义 Counter 类,通过 storage 读写计数,在入口用 idFromName 路由到对象;需在配置的入口点重新导出该类并使用兼容的 migration 类型。
- 自定义路由:按 zones 配置 pattern,要求包含 /* 后缀以匹配全部路径;也可用自定义域名(自动 SSL)。
适用场景与限制
适用于边缘 API、微服务、中间件、定时任务与轻量数据处理。主要限制与风险:
- KV 读-改-写非原子且最终一致,并发自增会丢更新,重复 put 会触及写入限制,TTL 重置使其成为滑动近似。提高 cacheTtl 不会让 KV 变为强一致。
- waitUntil 是有界的后台工作,不是持久化任务队列,也不能绕过 CPU 限制。
- 仅绑定已批准来源,代理前剥离意外凭证,分析数据外发前校验输入。
- 内联 KV/D1 示例会在每次请求时变更数据,须隔离或鉴权。
- 定时辅助函数与分析端点属于占位实现;第三个 cron 无处理器。
- 基础设施命令可能中断服务,变更状态前需确认目标主机与范围,并准备备份或快照。
- 该技能仅文档导入,上游脚本与模板未随附。
故障排查
资料列出常见问题:Error 1101(fetch 处理器未捕获异常,用 try/catch 并查看 tail 堆栈);超出 CPU 时间(免费 10ms、付费 30s,需优化或 offload);KV 读到陈旧数据(最终一致约 60s,可切换 Durable Objects 获取强一致);wrangler dev 绑定错误(用 --remote 或配置 preview_id);密钥未找到(检查环境是否匹配);CORS 错误(添加 Access-Control-Allow-Origin 并处理 OPTIONS 预检);路由不匹配(补 /* 后缀)。