CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Cloudflare 实战入门/课时/边缘计算概览
RawBlame
课时目录12 节

Cloudflare 实战入门

  1. 01边缘计算概览
  2. 02Wrangler 与本地开发
  3. 03Workers 核心
  4. 04Workers KV
  5. 05R2 对象存储
  6. 06D1 数据库
  7. 07Queues 消息队列
  8. 08Durable Objects
  9. 09Workers AI
  10. 10Stream 与媒体
  11. 11安全与防护
  12. 12运维与集成

边缘计算概览

Workers 运行时与 Serverless 模型。

30 分钟

边缘计算概览

这一课你将能做到

  1. 用一句话向同事解释什么是边缘计算、它和传统中心机房的本质区别
  2. 说清楚 Cloudflare Workers 与传统服务器(VPS / 容器 / Serverless 函数)的差异,并能判断什么场景该用 Workers
  3. 理解 V8 Isolate 模型为什么能让 Workers 做到毫秒级冷启动

为什么要学

你写完一个接口,部署到自己买的服务器上,用户在北京访问很快,但纽约用户要等 300ms 以上——因为物理距离摆在那里,光速也救不了。

人话:边缘计算就是把你的代码部署到离用户最近的机房。Cloudflare 在全球 300+ 个城市有数据中心,你的 Worker 代码会被复制到所有这些节点上,用户请求进来时,由地理上最近的节点处理。

对前端工程师尤其重要:本站前端是 Next.js,传统做法是部署到一个中心机房或 Vercel。但当用户遍布全球时,仅靠 CDN 加速静态资源是不够的——动态接口也需要「跑在边缘」。Cloudflare Workers 就是让你把动态逻辑(鉴权、改写、聚合、A/B 测试)放到离用户 50ms 以内的地方。

先建立图像

传统架构:

[北京用户] ── 30ms ──> [上海机房] <── 250ms ── [纽约用户]
                              │
                          [数据库]

边缘架构:

[北京用户] ── 5ms ──> [Cloudflare 北京节点] ─┐
                                              ├──> [源站/数据库(必要时回源)]
[纽约用户] ── 8ms ──> [Cloudflare 纽约节点] ─┘

Workers vs 其他方案的对比:

维度VPS / 容器AWS LambdaCloudflare Workers
运行位置固定机房单 Region全球 300+ PoP
冷启动常驻100ms - 数秒< 5ms(几乎为 0)
计费模型包月/按小时请求 + 时长请求次数 + CPU 时间
运行时Linux 全功能Linux 容器V8 Isolate(类浏览器)
长连接支持受限支持 WebSocket(DO)

跟着做

步骤 1:注册并安装 Wrangler

到 https://dash.cloudflare.com 注册账号(免费套餐足够学习)。然后:

npm install -g wrangler
wrangler --version
wrangler login

wrangler login 会打开浏览器完成 OAuth 授权。

步骤 2:创建第一个 Worker

npm create cloudflare@latest my-first-worker -- --type hello-world --ts true
cd my-first-worker

选择「Hello World」模板 + TypeScript。生成后的 src/index.ts 大致如下:

export default {
  async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
    return new Response('Hello from the Edge!', {
      headers: { 'content-type': 'text/plain;charset=utf-8' },
    });
  },
} satisfies ExportedHandler<Env>;

步骤 3:本地启动

npx wrangler dev

控制台会输出 Ready on http://localhost:8787,用 curl 验证:

curl http://localhost:8787
# Hello from the Edge!

步骤 4:看看「边缘」到底发生了什么

修改代码,把请求的一些边缘信息打出来:

export default {
  async fetch(request: Request): Promise<Response> {
    const cf = (request as any).cf ?? {};
    return Response.json({
      colo: cf.colo,            // 处理请求的机房代号(如 SJC、HKG)
      country: cf.country,
      city: cf.city,
      timezone: cf.timezone,
      asn: cf.asn,
    });
  },
} satisfies ExportedHandler<Env>;

重启 wrangler dev,访问后你会看到 colo 字段——本地开发时会显示最近的实际节点。

步骤 5:部署到全球

npx wrangler deploy

几秒钟后,Wrangler 会返回一个 *.workers.dev 域名。把它发给国外朋友访问,他们的请求会被路由到离他们最近的节点。

讲清楚要点

  1. 边缘计算 ≠ CDN:CDN 缓存静态内容,边缘计算执行你的代码。Cloudflare 既是 CDN,也是边缘计算平台。
  2. V8 Isolate 模型:传统 Serverless 为每个请求/并发启动一个容器或 microVM,Workers 复用同一个 V8 引擎进程内的 Isolate,冷启动几乎为 0,内存占用只有几 MB。
  3. 请求驱动模型:Worker 没有「常驻进程」,代码只在请求到达时运行,结束后回收。不能写 setInterval 做后台任务(要用 Cron Triggers 或 Queues)。
  4. Worker 不等于完整的 Node.js:它是类浏览器运行时,支持 Fetch、Streams、WebCrypto、Cache API,但不支持 fs、net、child_process。需要 Node 兼容包时开启 nodejs_compat。
  5. 免费套餐足够学习:每天 100,000 次请求免费,写 Demo、跑个人项目完全够用。

你可能会懵的地方

  • Worker 真的部署到全球 300+ 节点了吗? 是的。wrangler deploy 后,代码会自动同步到 Cloudflare 全网 PoP。但这不意味着每次部署都「瞬间」全球生效,通常需要几秒到几十秒的传播时间。

  • 那数据库怎么办?也在边缘吗? 不完全是。D1、KV、R2 都是「边缘友好」的存储,但底层主副本仍在中心区域。这就是为什么 Cloudflare 提供 Durable Objects(强一致)和 KV(最终一致)两种不同语义。

  • Workers 能不能跑 Java? 不能。原生支持 JavaScript/TypeScript,其他语言通过 WebAssembly(Rust、C、Go 可以编译到 WASM)。Java 至今没有实用的 WASM 方案。

  • 和 Vercel Edge Functions 有什么区别? Vercel Edge 底层跑的就是 Cloudflare Workers。区别是定价、生态、是否锁定 Next.js 平台。直接用 Cloudflare 通常更便宜、控制力更强。

  • 我会不会被锁死? Worker 的 fetch handler 是 Web 标准 API,业务逻辑容易迁移。但 KV、D1、Queues、Durable Objects 这些是 Cloudflare 特有的,迁出去要重写。

错法对照

错法问题正解
在 Worker 里 setInterval(fetch, 5000) 想定时拉数据Worker 没有后台执行环境,请求结束进程就停用 Cron Triggers 或 Queues
import fs from 'fs' 读本地文件运行时没有文件系统把数据放到 KV / R2 / D1
期望请求间共享全局变量存用户状态同一 Worker 实例会被多请求复用,但不保证,且跨节点不共享用 Durable Objects 或外部存储
写 await fetch(...) 不设置超时上游挂掉时 Worker 会被拖到超时(默认 30s CPU/墙钟上限)用 AbortController 设置超时
在边缘直接连中心数据库做多次往返抹杀边缘的低延迟优势减少回源、用 KV 缓存、或用 Cloudflare Hyperdrive

卡点急救

  1. 执行 wrangler login 后浏览器没反应:在终端按提示复制 URL 到浏览器手动打开;或改用 wrangler login --browser=false + API Token 方式。
  2. 部署成功但访问 404:确认访问的是 *.workers.dev 域名而不是自定义域名;自定义域名需要在 DNS 里把对应主机名接入 Cloudflare。
  3. 本地 dev 改了代码不生效:wrangler dev 默认监听文件变化,但偶尔失效,Ctrl+C 重启即可。

面试常问

  • Cloudflare Workers 冷启动为什么快? 它基于 V8 Isolate 而不是容器/虚拟机。Isolate 共享同一个 V8 进程,启动只需分配内存和加载 JS 代码,毫秒级;Lambda 这类方案需要拉起 Firecracker microVM,至少几十到几百毫秒。

  • 边缘计算适合什么场景? 延迟敏感、读多写少、逻辑轻量的:API 网关、鉴权中间件、A/B 测试、Header 改写、地理位置路由、SSR 边缘渲染。不适合:长任务、重计算、强一致写、大状态。

  • 如果数据库在美国,Worker 在欧洲节点运行,怎么办? 三条路:(1) 用 KV/D1 这种边缘存储减少回源;(2) 用 Durable Objects 把状态「钉」在用户附近;(3) 接受回源延迟,但用 Smart Placement 让 Worker 自动调度到离数据库最近的节点。

自测三问

  1. Worker 代码跑在哪个隔离层?它和 Docker 容器的区别是什么?
  2. 为什么在 Worker 里不能用 fs.readFile?
  3. 举一个适合放在边缘的业务场景,再说一个不适合的。

小结一句话

边缘计算把代码搬到离用户最近的机房,Cloudflare Workers 用 V8 Isolate 实现了毫秒级冷启动的请求驱动 Serverless。

延伸

  • Cloudflare Workers 官方文档
  • How Workers works(Isolate 模型详解)
  • 下一课:Wrangler 与本地开发,掌握脚手架、绑定、变量、密钥、模拟器全套工具链。
加载本节练习…
下一课 →Wrangler 与本地开发