cloudflare-workers

Polar Sponsor
爱发电 赞助
.NET 9.0

使用 Cloudflare Workers 快速开发——在 Cloudflare 全球网络上构建并部署无服务器应用。适用于构建 API、全栈 Web 应用...

Cloudflare Workers.

功能概述

Cloudflare Workers.是一项面向实际任务的技能,主要用于Overview.;Cloudflare Workers是一个无服务器的执行环境,运行在Cloudflare的全球网络上JavaScript,TypeScript,Python,以及Rust代码. .;

核心要点

  • Workers expert in m.。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Cloudflare Workers

概述

Cloudflare Workers 是一个无服务器执行环境,可在 Cloudflare 全球网络上运行 JavaScript、TypeScript、Python 和 Rust 代码。Workers 在毫秒级内启动,自动扩缩容,并通过绑定(bindings)与 Cloudflare 的存储和计算产品深度集成。

核心优势:

  • 零冷启动 — Workers 运行于 V8 隔离环境(isolates),而非容器
  • 全球部署 — 代码在遍布全球 300 多个城市的边缘节点运行
  • 丰富生态 — 支持 D1、KV、R2、Durable Objects、Queues、Containers、Workflows 等多种绑定
  • 全栈能力 — 单个项目即可构建 API 并托管静态资源
  • 标准兼容 — 原生支持 Web 标准 API(fetch、crypto、streams、WebSockets)

适用场景

以下场景推荐使用 Cloudflare Workers:

  • API 与后端服务 — RESTful API、GraphQL、tRPC、WebSocket 服务器
  • 全栈应用 — React、Next.js、Remix、Astro、Vue、Svelte 等框架搭配静态资源托管
  • 边缘中间件 — 身份认证、速率限制、A/B 测试、动态路由
  • 后台任务处理 — 定时任务(cron)、队列消费者、Webhook 接收器
  • 数据转换 — ETL 流水线、实时数据处理
  • AI 应用 — RAG 系统、聊天机器人、基于 Workers AI 的图像生成
  • 持久化工作流 — 支持自动重试的多步骤长周期任务(Workflows)
  • 容器化工作负载 — 在 Workers 旁运行 Docker 容器(Containers)
  • MCP 服务器 — 托管远程 Model Context Protocol 服务器
  • 代理与网关 — API 网关、内容变换、协议转换

快速入门流程

1. 安装 Wrangler CLI

npm install -g wrangler

# 登录 Cloudflare 账户
wrangler login

2. 创建新 Worker

# 推荐方式:使用 C3(create-cloudflare)
npm create cloudflare@latest my-worker

# 或手动创建
wrangler init my-worker
cd my-worker

3. 编写 Worker 逻辑

基础 HTTP API(TypeScript):

export default {
  async fetch(request: Request, env: Env): Promise {
    const url = new URL(request.url);

    if (url.pathname === "/api/hello") {
      return Response.json({ message: "Hello from Workers!" });
    }

    return new Response("Not found", { status: 404 });
  },
};

结合环境变量与 KV:

interface Env {
  MY_VAR: string;
  MY_KV: KVNamespace;
}

export default {
  async fetch(request: Request, env: Env): Promise {
    // 访问环境变量
    const greeting = env.MY_VAR;

    // 从 KV 读取数据
    const value = await env.MY_KV.get("my-key");

    return Response.json({ greeting, value });
  },
};

4. 本地开发

# 启动本地开发服务器(支持热重载)
wrangler dev

# 访问地址:http://localhost:8787

5. 部署至生产环境

# 部署到 workers.dev 子域名
wrangler deploy

# 部署到自定义域名(需在 wrangler.toml 中配置)
wrangler deploy

核心概念

Workers 运行时

Workers 基于 V8 JavaScript 引擎,并原生支持 Web 标准 API:

  • 执行模型:隔离环境(isolates),非容器 — 实现即时冷启动
  • CPU 时间限制:每次请求 10ms(免费版),30 秒(付费版)
  • 内存限制:每个 isolate 最高 128 MB
  • 支持语言:JavaScript、TypeScript、Python、Rust
  • 可用 API:fetch、crypto、streams、WebSockets、WebAssembly

支持的 Web API:

  • Fetch API(发起 HTTP 请求)
  • URL API(URL 解析)
  • Web Crypto(加解密、哈希)
  • Streams API(数据流处理)
  • WebSockets(实时双向通信)
  • Cache API(边缘缓存控制)
  • HTML Rewriter(HTML 内容改写)

处理器(Handlers)

Workers 通过不同事件处理器响应各类事件:

Fetch 处理器(HTTP 请求):

export default {
  async fetch(request: Request, env: Env, ctx: ExecutionContext) {
    return new Response("Hello!");
  },
};

Scheduled 处理器(定时任务):

export default {
  async scheduled(event: ScheduledEvent, env: Env, ctx: ExecutionContext) {
    // 按 wrangler.toml 中定义的时间表执行
    await env.MY_KV.put("last-run", new Date().toISOString());
  },
};

Queue 处理器(消息队列消费):

export default {
  async queue(batch: MessageBatch, env: Env, ctx: ExecutionContext) {
    for (const message of batch.messages) {
      await processMessage(message.body);
      message.ack();
    }
  },
};

绑定(Bindings)

绑定用于将 Worker 连接到 Cloudflare 各类资源,需在 wrangler.toml 中配置:

KV(键值存储):

[[kv_namespaces]]
binding = "MY_KV"
id = "your-kv-namespace-id"
// 使用示例
await env.MY_KV.put("key", "value");
const value = await env.MY_KV.get("key");

D1(SQL 数据库):

[[d1_databases]]
binding = "DB"
database_name = "my-database"
database_id = "your-database-id"
// 使用示例
const result = await env.DB.prepare(
  "SELECT * FROM users WHERE id = ?"
).bind(userId).all();

R2(对象存储):

[[r2_buckets]]
binding = "MY_BUCKET"
bucket_name = "my-bucket"
// 使用示例
await env.MY_BUCKET.put("file.txt", "contents");
const object = await env.MY_BUCKET.get("file.txt");
const text = await object?.text();

环境变量:

[vars]
API_KEY = "development-key"  # pragma: allowlist secret

密钥(Secrets)(敏感信息):

# 通过 CLI 设置(不写入 wrangler.toml)
wrangler secret put API_KEY

上下文(ctx)

ctx 参数提供对请求生命周期的精细控制:

export default {
  async fetch(request: Request, env: Env, ctx: ExecutionContext) {
    // 在响应发送后异步执行任务
    ctx.waitUntil(
      env.MY_KV.put("request-count", String(Date.now()))
    );

    // 出现异常时透传至源站
    ctx.passThroughOnException();

    return new Response("OK");
  },
};

顶层环境访问(Top-level Environment Access)

自 2025 年 3 月起,您可在模块顶层直接导入 env,无需再通过处理器参数传递:

import { env } from "cloudflare:workers";

// 在处理器外部访问绑定
const apiClient = new ApiClient({ apiKey: env.API_KEY });

export default {
  async fetch(request: Request): Promise {
    // 此处亦可直接使用 env,无需声明参数
    const data = await env.MY_KV.get("config");
    return Response.json({ data });
  },
};

此举避免了函数签名中冗余的 env 参数传递(prop-drilling),并支持模块级初始化逻辑。

高效开发模式

Wrangler 配置

精简版 wrangler.toml 示例:

name = "my-worker"
main = "src/index.ts"
compatibility_date = "2025-09-01"

# 自定义域名路由
routes = [
  { pattern = "api.example.com/*", zone_name = "example.com" }
]

# 或启用 workers.dev 子域名
workers_dev = true

# 环境变量
[vars]
ENVIRONMENT = "production"

# 绑定配置
[[kv_namespaces]]
binding = "CACHE"
id = "your-kv-id"

[[d1_databases]]
binding = "DB"
database_name = "production-db"
database_id = "your-db-id"

[[r2_buckets]]
binding = "ASSETS"
bucket_name = "my-assets"

# 定时触发器
[triggers]
crons = ["0 0 * * *"]  # 每日午夜执行

环境管理

通过环境区分预发布(staging)与生产(production):

[env.staging]
vars = { ENVIRONMENT = "staging" }

[env.staging.d1_databases]
binding = "DB"
database_name = "staging-db"
database_id = "staging-db-id"

[env.production]
vars = { ENVIRONMENT = "production" }

[env.production.d1_databases]
binding = "DB"
database_name = "production-db"
database_id = "production-db-id"
# 部署至 staging 环境
wrangler deploy --env staging

# 部署至 production 环境
wrangler deploy --env production

常用开发模式

带错误处理的 JSON API:

export default {
  async fetch(request: Request, env: Env): Promise {
    try {
      const url = new URL(request.url);

      if (url.pathname === "/api/users" && request.method === "GET") {
        const users = await env.DB.prepare("SELECT * FROM users").all();
        return Response.json(users.results);
      }

      if (url.pathname === "/api/users" && request.method === "POST") {
        const body = await request.json();
        await env.DB.prepare(
          "INSERT INTO users (name, email) VALUES (?, ?)"
        ).bind(body.name, body.email).run();
        return Response.json({ success: true }, { status: 201 });
      }

      return Response.json({ error: "Not found" }, { status: 404 });
    } catch (error) {
      return Response.json(
        { error: error.message },
        { status: 500 }
      );
    }
  },
};

身份认证中间件:

async function authenticate(request: Request, env: Env): Promise {
  const authHeader = request.headers.get("Authorization");
  if (!authHeader?.startsWith("Bearer ")) {
    return null;
  }

  const token = authHeader.substring(7);
  const userId = await env.SESSIONS.get(token);
  return userId;
}

export default {
  async fetch(request: Request, env: Env): Promise {
    const userId = await authenticate(request, env);

    if (!userId) {
      return Response.json({ error: "Unauthorized" }, { status: 401 });
    }

    // 继续处理已认证请求
    return Response.json({ userId });
  },
};

CORS 响应头设置:

const corsHeaders = {
  "Access-Control-Allow-Origin": "*",
  "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
  "Access-Control-Allow-Headers": "Content-Type, Authorization",
};

export default {
  async fetch(request: Request): Promise {
    if (request.method === "OPTIONS") {
      return new Response(null, { headers: corsHeaders });
    }

    const response = await handleRequest(request);

    // 向响应添加 CORS 头
    Object.entries(corsHeaders).forEach(([key, value]) => {
      response.headers.set(key, value);
    });

    return response;
  },
};

静态资源托管(全栈应用)

将静态文件与 Worker 代码一同部署:

[assets]
directory = "./public"
binding = "ASSETS"
export default {
  async fetch(request: Request, env: Env): Promise {
    const url = new URL(request.url);

    // API 路由
    if (url.pathname.startsWith("/api/")) {
      return handleAPI(request, env);
    }

    // 通过 ASSETS 绑定提供静态资源
    return env.ASSETS.fetch(request);
  },
};

测试

使用 Vitest:

import { env, createExecutionContext } from "cloudflare:test";
import { describe, it, expect } from "vitest";
import worker from "./index";

describe("Worker", () => {
  it("responds with JSON", async () => {
    const request = new Request("http://example.com/api/hello");
    const ctx = createExecutionContext();
    const response = await worker.fetch(request, env, ctx);

    expect(response.status).toBe(200);
    expect(await response.json()).toEqual({ message: "Hello!" });
  });
});

框架集成

Workers 原生支持主流框架(通过适配器):

  • Next.js — 完整支持 App Router 与 Pages Router
  • Remix / React Router — 官方 Cloudflare 适配器
  • Astro — 在 Workers 上实现服务端渲染(SSR)
  • SvelteKit — 提供 Cloudflare 适配器
  • Hono — 专为 Workers 设计的轻量级 Web 框架
  • tRPC — 类型安全 API,完整支持 Workers

Hono 示例:

import { Hono } from "hono";

const app = new Hono();

app.get("/", (c) => c.text("Hello!"));
app.get("/api/users/:id", async (c) => {
  const id = c.req.param("id");
  const user = await c.env.DB.prepare(
    "SELECT * FROM users WHERE id = ?"
  ).bind(id).first();
  return c.json(user);
});

export default app;

进阶主题

如需了解高级功能的详细说明,请参阅以下参考文档:

  • 完整绑定指南:references/bindings-complete-guide.md — 涵盖全部绑定类型(D1、KV、R2、Durable Objects、Queues、Workers AI、Vectorize、Workflows、Containers、Secrets Store、Pipelines、AutoRAG)
  • 部署与 CI/CD:references/wrangler-and-deployment.md — Wrangler v4 迁移指南、命令详解、GitHub Actions 集成、GitLab CI/CD、渐进式发布、远程绑定配置
  • 开发最佳实践:references/development-patterns.md — 测试策略、调试技巧、错误处理、性能优化、顶层 env 访问模式
  • 高级特性:references/advanced-features.md — Containers、Workflows、MCP 服务器、Workers for Platforms、WebSockets、Node.js 兼容性、流式响应
  • 可观测性:references/observability.md — 日志(tail、Logpush、Workers Logs)、指标(metrics)、链路追踪(traces)、调试方法

参考资料

官方文档:

  • Workers:https://developers.cloudflare.com/workers/

  • Wrangler CLI:https://developers.cloudflare.com/workers/wrangler/

  • 运行时 API:https://developers.cloudflare.com/workers/runtime-apis/

  • 示例代码:https://developers.cloudflare.com/workers/examples/

  • Workflows:https://developers.cloudflare.com/workflows/

  • Containers:https://developers.cloudflare.com/containers/

模板与快速启动:

  • 模板库:https://developers.cloudflare.com/workers/get-started/quickstarts/
  • 框架指南:https://developers.cloudflare.com/workers/framework-guides/

社区支持:

  • Discord:https://discord.cloudflare.com
  • GitHub:https://github.com/cloudflare/workers-sdk

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.3万人学习