从零构建 Serverless 边缘应用,掌握边缘计算的核心概念与工程实践
V8 隔离环境,<1ms 冷启动,全球 300+ 边缘节点就近响应
通过 addEventListener("fetch") 拦截并处理 HTTP 请求
请求分发、CORS 处理、日志拦截等中间件链模式
Cloudflare 的分布式键值存储,全局低延迟读写
bindings / secrets / wrangler.toml 配置管理
本地开发、预览部署、生产发布全流程
每个 Worker 在独立的 V8 Isolate 中运行,冷启动 < 1ms,资源隔离,无容器开销
代码和常量在每个请求间复用,但变量不共享(除非用 Durable Objects / KV)
每个 HTTP 请求触发一次 fetch 事件,通过 event.respondWith() 返回 Response
基于 Web Standards 的 Fetch API,与浏览器中完全一致,无需重新学习
分布式键值存储,通过 env.MY_KV.get(key) 读取,写操作最终一致
通过 wrangler secret put 注入,代码中通过 env.MY_SECRET 读取,不暴露明文
目标:理解 Worker 的请求-响应模型,能够读取 Request 对象并构造 Response。
Cloudflare Worker 通过 addEventListener("fetch") 拦截请求,用 event.respondWith() 返回响应。下面用浏览器模拟这个流程。
目标:理解 KV 存储的工作机制,能够在 Worker 中实现基本的读写缓存。
Cloudflare KV 是一个全局分布式键值存储。我们用 JavaScript 对象模拟它的行为:
kv.get(key) — 读取值,如果不存在返回 nullkv.put(key, value) — 写入值(覆盖原有值)kv.list() — 列出所有 key完成后回答下面的问题来检验你的理解:
Q1. Cloudflare KV 的读写一致性模型是?
Q2. 为什么 KV 写操作不适合需要强一致性的场景?
目标:从零构建一个带路由、CORS、中间件和 KV 缓存的完整 Worker。
在上一级的基础上,现在你要添加以下功能:
/api/users 列表、/api/users/:id 单条、/api/health 健康检查/api/users 结果缓存 10 秒Access-Control-Allow-Origin: *CORS 中间件:
带缓存的 getUsers:
目标:理解环境变量、Secrets 和 Wrangler 配置管理,能够安全地部署 Worker。
实际项目中,API Key、数据库密码等敏感信息不能硬编码。Workers 提供两种配置机制:
| 机制 | 用途 | 安全性 |
|---|---|---|
| vars | 非敏感配置,如 API 地址、功能开关 | 明文可见于 dashboard |
| secrets | 敏感信息,如数据库密码、第三方 API Key | 加密存储,不可明文读取 |
| bindings | KV / Durable Objects / R2 等服务绑定 | 由 Cloudflare 管理 |
下面的 Worker 代码存在多个安全问题,找出它们:
列出你发现的问题:
wrangler secret put DB_PASSWORD 注入Access-Control-Allow-Origin/admin/delete-all 没有任何认证,任何人都可以调用目标:用 Wrangler CLI 从零创建、本地测试并部署一个真实 Worker。
npm install -g wranglerwrangler login(会打开浏览器授权)wrangler init my-first-workercd my-first-worker && wrangler devwrangler deploywrangler dev 和 wrangler deploy 分别做了什么?V8 隔离 + 全球边缘节点,<1ms 冷启动,HTTP 请求通过 fetch 事件驱动处理
通过路径匹配分发请求,CORS 和日志作为中间件横切所有端点
分布式键值存储,适合缓存、会话、计数器等场景;注意最终一致性
vars 放公开配置,secrets 放敏感信息,bindings 连接 Cloudflare 服务
wrangler dev 本地开发,wrangler deploy 一键发布到全球边缘网络
不管理服务器、按需付费、自动扩缩容。Workers 把开发者从运维中解放出来,专注业务逻辑