总结: Cloudflare Workers 运行在 V8 isolates 之上,这种轻量级的 JavaScript 执行上下文比传统的 Node.js 进程更加高效。本指南涵盖了运行时架构、可用的 Web API、Node.js 兼容性以及在使用 Workers 构建应用时您需要了解的运行时限制。
简介
与传统的 Node.js 或 Deno 运行时不同,Cloudflare Workers 使用 V8 isolates。一个 isolate 即单个 V8 执行上下文,能够在短短 5 毫秒内启动,占用的内存仅为完整 Node.js 进程的一小部分,且能在单个进程内处理数千个并发请求。如果您是刚接触 Workers 的新手,请从我们的 Cloudflare Workers 介绍 指南开始,学习项目设置的基础知识。
可用的 Web API
Workers 实现的是标准 Web API,而不是 Node.js API:
| API | 是否可用 | 注意事项 |
|---|---|---|
fetch() | 是 | 全局存在,提供扩展选项 |
Request/Response | 是 | 标准 Web API |
ReadableStream | 是 | 全面支持 |
Crypto | 是 | crypto.subtle |
TextEncoder/TextDecoder | 是 | 标准 |
URL/URLSearchParams | 是 | 标准 |
setTimeout/setInterval | 是 | 仅限在当前上下文中有效 |
Node.js fs、net、http | 否 | 请使用 Workers 专用 API |
运行时限制
- 无法访问文件系统(请使用 R2 或 KV)
- 50 毫秒的 CPU 执行限制(对于 Unbound 模式最高为 30 秒)——如有重度处理需求,请参阅 Cloudflare Workers Unbound
- 128MB 的内存限制
- 不支持原始 TCP/UDP 套接字(请使用 Durable Objects)
- 不支持子进程
- 最大响应体积为 100MB
结论
V8 isolate 架构赋予了 Workers 极致的速度与运行效率。其代价是 API 层面的限制——无法使用 Node.js 模块、缺少文件系统以及原生套接字的访问能力。不过对于绝大多数 Web 应用程序而言,现有的 Web API 已完全足够。要了解在实际场景中 Workers 如何与 Lambda@Edge 进行对比,请查阅我们的 边缘计算:Workers vs Lambda@Edge 指南。