Cloudflare Workers 深度解析:JavaScript 运行时与 V8 Isolates

全面了解 Cloudflare Workers 的 JavaScript 运行时工作机制,深入探讨 V8 isolates 的底层架构优势、Web API 的可用性与 Node.js 兼容性,以及在实际开发边缘计算应用时,您必须掌握且遵循的各项重要性能限制、资源策略和核心运行边界。

Alex Chen
Alex Chen
June 1, 20269 min read
其他语言:Deutsch · English

总结: 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 指南。