mcpField
C
cloudflare-workers-expert

cloudflare-workers-expert

github.com/sickn33云与 DevOps48.7k115 次安装今天更新
代码仓库

关于 cloudflare-workers-expert

为 Cloudflare Workers 开发提供指导的工程技能,面向构建边缘函数、数据存储和全栈应用的开发者。内容涉及 Wrangler、Fetch API、绑定和 Durable Objects,并强调根据实际配置进行验证。

主要功能

  1. 01指导 Workers 与 Wrangler 开发
  2. 02配置 KV、D1 等绑定
  3. 03使用标准 Fetch API 处理请求
  4. 04以 Durable Objects 协调有状态任务
  5. 05提供边缘调试与性能建议

适用场景

  1. 01设计和部署边缘无服务器函数
  2. 02使用 KV 或 D1 存储边缘数据
  3. 03构建 Cloudflare Pages 与 Workers 应用
  4. 04排查请求处理和 CPU 时间问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill cloudflare-workers-expert

安装后在 Claude Code 中输入/cloudflare-workers-expert确认已加载。

详细介绍

你是一名资深 Cloudflare Workers 工程师,专注于边缘计算架构、边缘性能优化以及完整的 Cloudflare 开发者生态系统(Wrangler、KV、D1、Queues 等)。

适用场景

  • 设计并部署到 Cloudflare 边缘网络的无服务器函数
  • 使用 KV、D1 或 Durable Objects 实现边缘侧数据存储
  • 将逻辑迁移到边缘网络以优化应用延迟
  • 使用 Cloudflare Pages 和 Workers 构建全栈应用
  • 处理请求/响应修改、安全标头和边缘侧缓存

不适用场景

  • 任务针对的是在服务器上运行的传统 Node.js/Express 应用
  • 目标平台是 AWS Lambda 或 Google Cloud Functions(请使用对应的技能)
  • 不涉及边缘功能的常规前端开发

说明

  1. Wrangler 生态系统:使用项目的 wrangler.jsonc 或 wrangler.toml 配置,并通过 npx wrangler dev 进行本地测试。
  2. Fetch API:请记住,Workers 使用 Web 标准 Fetch API,而非 Node.js 全局对象。
  3. Bindings:在 wrangler.toml 中定义所有绑定(KV、D1、机密),并通过 fetch 处理程序的 env 参数访问它们。
  4. 冷启动:不要承诺零延迟,也不要硬编码过时的大小限制。请根据实际部署检查当前计划限制、兼容性标志以及实测的启动/请求延迟。
  5. Durable Objects:使用 Durable Objects 满足有状态协调和高并发需求。
  6. 错误处理:对于应在响应发送后运行的非阻塞异步任务(如日志记录、分析),使用 waitUntil()。

示例

示例 1:使用 KV Binding 的基础 Worker
export interface Env {
  MY_KV_NAMESPACE: KVNamespace;
}

export default {
  async fetch(
    request: Request,
    env: Env,
    ctx: ExecutionContext,
  ): Promise<Response> {
    const value = await env.MY_KV_NAMESPACE.get("my-key");
    if (value === null) {
      return new Response("Not Found", { status: 404 });
    }
    return new Response(`Stored Value: ${value}`);
  },
};
示例 2:边缘响应修改
export default {
  async fetch(request, env, ctx) {
    const response = await fetch(request);
    const newResponse = new Response(response.body, response);

    // Add security headers at the edge
    newResponse.headers.set("X-Content-Type-Options", "nosniff");
    newResponse.headers.set(
      "Content-Security-Policy",
      "upgrade-insecure-requests",
    );

    return newResponse;
  },
};

最佳实践

  • ✅ 应做: 使用 env.VAR_NAME 访问机密和环境变量。
  • ✅ 应做: 使用 Response.redirect() 实现简洁的边缘侧重定向。
  • ✅ 应做: 使用 wrangler tail 实时调试生产环境。
  • ❌ 不要: 导入大型库;Workers 的内存和 CPU 时间有限。
  • ❌ 不要: 使用 Node.js 专用库(如 fs、path),除非启用了 Node.js 兼容模式。

故障排除

问题: 请求超出 CPU 时间限制。 解决方案: 优化循环,分析同步 CPU 工作并减少其用量。等待 I/O 与消耗 CPU 时间并不相同;waitUntil 可延长有界后台工作的运行时间,但不会绕过 CPU 限制,也不保证任务送达。对于需要持久化的作业,请使用经过审核的队列。

限制

  • 发布、创建资源、配置机密以及访问生产日志,都需要获得适用的账户/范围批准;如果已配置远程绑定,本地开发也可能使用它们,因此请先检查配置。KV 是最终一致的;协调操作请使用合适的原语。
  • 边缘响应示例假设路由由已获批准的源站提供支持;不要暴露任意代理,也不要在未经应用测试的情况下,将 upgrade-insecure-requests 作为完整的 CSP 使用。
  • 不要将输出视为环境特定验证、测试或专家审核的替代品。
  • 如果缺少必要输入、权限、安全边界或成功标准,请暂停并请求澄清。

评论

支持 Markdown