已完成 0 / 5 个层级

Cloudflare Workers 入门

从零构建 Serverless 边缘应用,掌握边缘计算的核心概念与工程实践

知识图谱 你要学什么

Workers 运行时

V8 隔离环境,<1ms 冷启动,全球 300+ 边缘节点就近响应

🔄

Fetch 事件

通过 addEventListener("fetch") 拦截并处理 HTTP 请求

🗺️

路由与中间件

请求分发、CORS 处理、日志拦截等中间件链模式

💾

KV 存储

Cloudflare 的分布式键值存储,全局低延迟读写

🔐

环境变量

bindings / secrets / wrangler.toml 配置管理

🚀

部署与 Wrangler

本地开发、预览部署、生产发布全流程

核心概念

V8 隔离

每个 Worker 在独立的 V8 Isolate 中运行,冷启动 < 1ms,资源隔离,无容器开销

全局共享

代码和常量在每个请求间复用,但变量不共享(除非用 Durable Objects / KV)

Fetch 事件

每个 HTTP 请求触发一次 fetch 事件,通过 event.respondWith() 返回 Response

Request / Response

基于 Web Standards 的 Fetch API,与浏览器中完全一致,无需重新学习

KV 绑定

分布式键值存储,通过 env.MY_KV.get(key) 读取,写操作最终一致

Secrets 绑定

通过 wrangler secret put 注入,代码中通过 env.MY_SECRET 读取,不暴露明文

Level 1 — 认识 ~25 分钟

目标:理解 Worker 的请求-响应模型,能够读取 Request 对象并构造 Response。

📌 任务 1:模拟一个 Cloudflare Worker

Cloudflare Worker 通过 addEventListener("fetch") 拦截请求,用 event.respondWith() 返回响应。下面用浏览器模拟这个流程。

编辑器 — 修改下面的代码

输出

点击 "运行代码" 查看结果...
💡 需要提示?点击查看
// 任务 A:将 status 改为 201,message 改为 "已创建" return new Response( JSON.stringify({ message: "已创建", status: 201 }), { headers: { "Content-Type": "application/json" } } ); // 任务 B:添加 echo 端点 else if (url.pathname === "/api/echo") { return new Response( JSON.stringify({ method: method, path: url.pathname }), { headers: { "Content-Type": "application/json" } } ); }

Level 2 — 引导实践 ~30 分钟

目标:理解 KV 存储的工作机制,能够在 Worker 中实现基本的读写缓存。

📌 任务 2:模拟 KV 存储 — 实现一个计数器

Cloudflare KV 是一个全局分布式键值存储。我们用 JavaScript 对象模拟它的行为:

编辑器

输出

点击 "运行代码" 测试你的 KV 实现...
💡 任务 A 提示
async function handleRequestKV(request) { const url = new URL(request.url); if (url.pathname === "/api/page-views") { let count = await kv.get("page_views"); if (count === null) count = 0; count++; await kv.put("page_views", count); return new Response( JSON.stringify({ views: count }), { headers: { "Content-Type": "application/json" }} ); } return new Response("Not found", { status: 404 }); }

📌 任务 3:构建 KV 计数器

完成后回答下面的问题来检验你的理解:

Q1. Cloudflare KV 的读写一致性模型是?

Q2. 为什么 KV 写操作不适合需要强一致性的场景?

Level 3 — 独立实现 ~35 分钟

目标:从零构建一个带路由、CORS、中间件和 KV 缓存的完整 Worker。

📌 任务 4:构建完整的 API Gateway

在上一级的基础上,现在你要添加以下功能:

编辑器

输出

点击 "运行代码" 测试你的实现...
💡 需要提示?点击查看关键片段

CORS 中间件:

function withCORS(response) { const newHeaders = new Headers(response.headers); newHeaders.set("Access-Control-Allow-Origin", "*"); newHeaders.set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); return new Response(response.body, { ...response, headers: newHeaders }); }

带缓存的 getUsers:

async function getUsers() { const cached = getCache("users_list"); if (cached) return cached; const result = users.map(u => ({ id: u.id, name: u.name, role: u.role })); setCache("users_list", result); return result; }

Level 4 — 进阶实践 ~30 分钟

目标:理解环境变量、Secrets 和 Wrangler 配置管理,能够安全地部署 Worker。

📌 任务 5:环境变量与 Secrets

实际项目中,API Key、数据库密码等敏感信息不能硬编码。Workers 提供两种配置机制:

机制用途安全性
vars非敏感配置,如 API 地址、功能开关明文可见于 dashboard
secrets敏感信息,如数据库密码、第三方 API Key加密存储,不可明文读取
bindingsKV / Durable Objects / R2 等服务绑定由 Cloudflare 管理

wrangler.toml 配置示例

📌 任务 6:识别配置问题

下面的 Worker 代码存在多个安全问题,找出它们:

有问题的 Worker 代码

你的发现

列出你发现的问题:

💡 参考答案(4 个安全问题)
  1. 密码硬编码 — 使用 wrangler secret put DB_PASSWORD 注入
  2. 密码泄露在 URL 中 — URL 参数会被日志记录,应放在请求 body 或 header 中
  3. 缺少 CORS — 所有响应都应添加 Access-Control-Allow-Origin
  4. 无权限校验/admin/delete-all 没有任何认证,任何人都可以调用

Level 5 — 实战部署 ~30 分钟+

目标:用 Wrangler CLI 从零创建、本地测试并部署一个真实 Worker。

🚀 任务 7:部署你的第一个 Worker

  1. 注册 Cloudflare 账号(免费)
  2. 安装 Wrangler:npm install -g wrangler
  3. 登录:wrangler login(会打开浏览器授权)
  4. 创建项目:wrangler init my-first-worker
  5. 本地预览:cd my-first-worker && wrangler dev
  6. 部署到云端:wrangler deploy
  7. 访问你的 Worker URL,确认它在全球边缘运行

🧠 思考题

总结

⚡ Workers 运行时

V8 隔离 + 全球边缘节点,<1ms 冷启动,HTTP 请求通过 fetch 事件驱动处理

🗺️ 路由与中间件

通过路径匹配分发请求,CORS 和日志作为中间件横切所有端点

💾 KV 存储

分布式键值存储,适合缓存、会话、计数器等场景;注意最终一致性

🔐 安全配置

vars 放公开配置,secrets 放敏感信息,bindings 连接 Cloudflare 服务

🚀 Wrangler CLI

wrangler dev 本地开发,wrangler deploy 一键发布到全球边缘网络

🏗️ Serverless 思维

不管理服务器、按需付费、自动扩缩容。Workers 把开发者从运维中解放出来,专注业务逻辑