Cloudflare Workers
在 Cloudflare 全球网络上构建、部署和扩展应用的 Serverless 计算平台。
项目概述
Cloudflare Workers 以 Web 标准 API 和 V8 Isolate 为基础,让开发者用 JavaScript、TypeScript 等语言构建边缘 API、全栈应用、后台任务与 AI 服务,并通过 Bindings 连接数据和平台能力。
Cloudflare Workers 是运行在 Cloudflare 全球网络上的 Serverless 应用平台。请求由基于 V8 Isolate 的运行环境处理,应用以标准 Request、Response、Fetch、Streams、Web Crypto 等 Web API 编写,不需要自行管理服务器、容器编排或区域扩容。Workers 可通过 Bindings 直接连接 KV、D1、R2、Durable Objects、Queues、Workers AI、Vectorize、Hyperdrive 和其他服务,并用 Wrangler 在本地开发、生成类型、部署、查看日志与管理配置。支撑 Workers 的 workerd 运行时采用 Apache-2.0 许可证开源,但 Cloudflare 托管网络、控制面和部分平台服务并不等同于一个可完整自托管的开源产品。
主要特点
Workers 将全球分布式计算、Web 标准运行时、数据 Bindings 和应用交付流程组织成同一套平台能力。
全球分布式 Serverless 运行
应用由 Cloudflare 网络在接近请求的位置执行,平台负责容量、实例调度、部署和基础网络,无需维护常驻服务器。
轻量 V8 Isolate 模型
workerd 使用 V8 Isolate 隔离不同 Worker,相比为每个请求启动完整虚拟机或容器更轻量,并支持快速创建执行上下文。
Web 标准编程接口
Fetch Handler 直接接收 Request 并返回 Response,同时支持 URL、Headers、Streams、WebSocket 和 Web Crypto 等熟悉的标准 API。
丰富的平台 Bindings
通过 env 或生成的类型直接访问 KV、D1、R2、Durable Objects、Queues、AI、Vectorize 与服务绑定,避免从 Worker 内调用管理 REST API。
完整应用与静态资源
除 API 外,还可部署静态资源和主流全栈框架,并在同一项目中组合前端资产、服务端渲染和后端逻辑。
后台任务与有状态能力
Cron Triggers、Queues、Workflows 和 Durable Objects 分别覆盖定时执行、异步消息、持久流程与强一致协调。
Node.js 兼容路径
nodejs_compat 可提供 Buffer、Crypto、Stream、AsyncLocalStorage 等 Node.js API,帮助更多 npm 库运行在 Workers 环境。
版本、日志与可观测性
兼容日期控制运行时行为,版本和渐进部署降低发布风险;Workers Logs、实时 Tail、指标与 Trace 用于定位线上问题。
适用场景
适合需要靠近用户执行、按请求弹性扩展,或希望把计算、静态资源、数据和 AI 服务放入统一平台的应用。
全球 API 与 BFF
在接近用户的位置完成认证、聚合、个性化和响应转换,为 Web、移动端或第三方客户端提供轻量后端。
边缘代理与请求处理
在现有源站前执行重写、重定向、Header 处理、访问控制、实验分流和缓存策略。
全栈 Web 应用
部署 React、Vue、Svelte、Astro、Next.js 等框架,把静态资源、服务端渲染、Route Handler 和数据访问组合在一起。
实时协作与协调
结合 WebSocket 和 Durable Objects 构建聊天室、协作文档、游戏房间及需要单实体强一致状态的系统。
异步任务与工作流
使用 Queues、Cron Triggers 和 Workflows 处理 Webhook、通知、定时同步、批处理及可重试的长流程。
AI 与数据应用
通过 Workers AI、Vectorize、AI Gateway、R2 和 D1 构建推理、RAG、内容处理和数据驱动的边缘应用。
优点与注意事项
技术选型不仅要看能力,也要理解它带来的团队成本。
主要优点
Cloudflare Workers 擅长的地方
- 计算可在 Cloudflare 全球网络中靠近用户执行
- 无需管理服务器、容器集群、补丁和基础容量扩缩
- Web 标准 API 便于在浏览器、边缘和多运行时之间共享代码思路
- Bindings 让计算直接连接存储、消息、AI 和其他 Worker
- Wrangler 覆盖脚手架、本地开发、类型生成、部署与实时日志
- workerd 开源,运行时行为可查看源码并可用于本地及其他部署场景
需要注意
采用前应考虑的问题
workerd 可以开源使用,但 Cloudflare 的全球网络、控制面、托管数据服务和运维能力不能通过部署 workerd 完整复制,选型时要区分两者。
Workers 以 Web API 和 Isolate 为核心。即使启用 nodejs_compat,原生扩展、任意进程、传统文件系统及部分底层网络行为仍可能不可用。
CPU 时间、内存、请求体、子请求、并发连接和执行时长等限制会随产品与套餐变化,设计前应查看当前官方限制而不是依赖旧数字。
同一 Isolate 可能处理多个请求,不应把用户、认证或请求上下文保存在可变全局变量中;持久状态应放入合适的存储或 Durable Object。
KV、D1、R2、Durable Objects 和外部数据库拥有不同的一致性、查询、容量与延迟模型,不能用一个绑定替代所有数据需求。
全球执行并不自动降低到单一区域数据库的延迟。应评估 Smart Placement、Hyperdrive、连接方式和数据所在区域。
大量依赖专用 Bindings、路由和部署能力会增加迁移成本,可把领域逻辑与平台适配层分离,并用本地和集成测试覆盖边界。
每个 Promise 都应 await、return 或交给 ctx.waitUntil;未等待的异步任务可能在响应返回后被取消,错误也可能丢失。
快速开始
使用官方 C3 脚手架、TypeScript、Wrangler 和原生 Fetch Handler 创建一个最小 JSON API。
bashnpm create cloudflare@latest -- hello-workers
cd hello-workers
# 在向导中选择:
# Hello World example
# Worker only
# TypeScript
# 暂不部署json{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "hello-workers",
"main": "src/index.ts",
"compatibility_date": "2026-07-26",
"compatibility_flags": ["nodejs_compat"],
"observability": {
"enabled": true,
"head_sampling_rate": 1
}
}typescriptexport default {
async fetch(request): Promise<Response> {
const url = new URL(request.url);
const requestId = crypto.randomUUID();
if (request.method === "GET" && url.pathname === "/health") {
return Response.json(
{ status: "ok", runtime: "Cloudflare Workers" },
{ headers: { "x-request-id": requestId } },
);
}
if (request.method === "GET" && url.pathname === "/api/hello") {
const name = url.searchParams.get("name") ?? "World";
return Response.json(
{ message: `Hello, ${name}!`, requestId },
{ headers: { "cache-control": "no-store" } },
);
}
return Response.json(
{ error: "Not found", requestId },
{ status: 404 },
);
},
} satisfies ExportedHandler<Env>;bashnpx wrangler types
npm run dev
# 默认本地地址通常是 8787
curl "http://localhost:8787/health"
curl "http://localhost:8787/api/hello?name=Ada"bash# 交互式输入,不把密钥写进源码或 wrangler.jsonc
npx wrangler secret put API_TOKEN
# 本地开发使用 .dev.vars,并确保它已被 .gitignore 排除bashnpx wrangler deploy
npx wrangler tail下一步:新项目应把 compatibility_date 设为当前日期、定期测试升级,使用 wrangler types 生成绑定类型,并把机密交给 Wrangler 管理。生产环境还应根据流量调整日志采样,核对套餐限制,并为外部请求设置超时、重试和降级路径。
类似项目
这些运行时和框架同样可以执行服务端 JavaScript,但在执行模型、系统 API、部署方式和平台依赖上各有侧重。
Hono
基于 Web 标准、轻量快速且可运行于多种 JavaScript 环境的 Web 框架。
查看项目Node.js
基于 V8、用于服务器、命令行工具和网络应用的跨平台 JavaScript 运行时。
查看项目Deno
默认支持 TypeScript 的安全 JavaScript、TypeScript 运行时。
查看项目Bun
集运行时、包管理器、测试与打包工具于一体的工具链。
查看项目Vercel Functions
与 Vercel Web 项目和框架部署结合紧密的 Serverless 函数平台。
访问官网AWS Lambda
AWS 的事件驱动 Serverless 计算服务,拥有广泛的云服务集成。
访问官网Cloudflare Workers vs Node.js
Cloudflare Workers 和 Node.js 都能执行服务端 JavaScript,但 Workers 是托管在全球网络上的 Isolate 平台,Node.js 则是可在自有服务器、容器和多种云环境中运行的通用进程运行时。
| 比较维度 | Cloudflare Workers | Node.js |
|---|---|---|
| 交付形态 | Cloudflare 托管的全球 Serverless 平台 | 可自行安装和部署的跨平台运行时 |
| 执行模型 | V8 Isolate,由平台调度和复用 | 操作系统进程,使用 V8 与 libuv |
| 主要 API | Request、Response、Fetch、Streams 与平台 Bindings | Node 核心模块、Web API、操作系统和网络接口 |
| 基础设施 | 无需管理服务器,平台负责全球扩缩和发布 | 自行选择主机、容器、Serverless 或托管平台 |
| 数据连接 | KV、D1、R2、Durable Objects、Hyperdrive 等 Bindings | 通过 npm 客户端、网络协议和本地系统资源连接 |
| 生态兼容 | Web 标准优先,通过 nodejs_compat 支持部分 Node 生态 | Node.js 与 npm 生态的兼容性基准 |
| 运行约束 | 受平台 CPU、内存、连接和执行模型限制 | 由主机、容器和操作系统资源配置决定 |
| 更适合 | 全球 API、边缘逻辑、Serverless 全栈与平台数据服务 | 长驻服务、原生扩展、复杂后台任务和自定义基础设施 |
需要全球分布、自动扩缩、低运维负担,并愿意采用 Web API 和 Cloudflare Bindings 时,Workers 通常更直接;需要完整 Node.js 兼容、原生扩展、任意后台进程或基础设施控制权时,Node.js 更合适。许多系统也会组合使用:Workers 处理边缘认证、缓存和 API 聚合,区域 Node.js 服务承担重计算与既有业务。
资料核验
版本、维护信息与本页采用的官方资料来源。
本页依据 Cloudflare Workers 官方概述、CLI 入门、Fetch Handler、兼容日期与最佳实践文档,以及最新 workerd 源码和 Workers 类型定义整理。示例采用 ES Modules、当前 compatibility_date、wrangler types、nodejs_compat 和结构化可观测配置;平台能力、限制与价格变化较快,生产采用前应再次核对官方文档。
官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 25 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。