Cloudflare Workers 实测

每天 10 万次免费请求 + KV 边缘存储免费额度 —— 把 R2 / Pages 拼成零成本全球应用的「胶水层」,附 7 个真实踩坑。

← 返回教程列表

分类:实测教程 · 最后更新:2026-10-08 · 适用:中文个人开发者

Cloudflare Workers 是跑在 Cloudflare 全球边缘节点的 Serverless 函数:代码不是起一台容器,而是被塞进 V8 isolate,在全球几百个节点上毫秒级冷启动。它最适合做「请求进来的瞬间干点轻活」——改个响应头、做反代、接 KV 缓存、给 R2 套个上传 / 鉴权层。相比 Vercel 函数(Node 运行时)和 Neon(数据库),Workers 是「贴着用户最近的、最便宜的计算」。

本篇是实测向教程,重点在「免费层给多少」和「哪里会踩坑」。控制台 / 文档:workers.cloudflare.com。免费层无需绑卡即可部署到 *.workers.dev 子域名(想绑自己域名再接解析即可)。

一、免费层额度清单(先看清边界)

Workers 免费层叫 Workers Free,2026 年实测到的量级如下(具体以 官网定价页 为准):

资源免费层额度说明
请求数100,000 次 / 天硬上限,超了需升级付费计划
CPU 时长10 ms / 请求免费层单请求最多跑 10ms CPU(付费可到 50ms+)
子请求(subrequest)50 次 / 请求免费层每个请求内最多发起 50 次子请求
Workers KV读 10 万 / 天、写 1 千 / 天、存 1 GB边缘键值存储,附赠的免费额度
部署子域*.workers.dev 免费无需自有域名即可上线;绑自有域名需把域名解析到 Cloudflare
Worker 脚本数可创建多个免费层允许同时维护多个脚本项目
⚠️ 踩坑 1 — 10 万次 / 天是「硬上限」,不是软限速。免费层请求一旦超量,Cloudflare 会直接拒绝(表现为 1015 或函数不响应),不会温柔降级。对策:用 Cache API / KV 缓存结果,把「每个用户请求」收敛成「少量回源」;真有稳定大流量再升付费。

二、适合用它做什么

三、开通全流程(实测步骤)

  1. 注册 Cloudflare 账号。进 dash.cloudflare.com 注册(免费层无需绑卡)。绑定自有域名可选,不影响先用 workers.dev。
  2. 安装 Wrangler。npm install -g wrangler(或用 npx wrangler)。Wrangler 是官方 CLI,本地开发 + 部署都靠它。
  3. 登录授权。跑 wrangler login,浏览器跳授权后拿到凭证(凭证存在本地,不要提交进 git)。
  4. 初始化项目。wrangler init my-worker,选「Hello World (fetch handler)」模板,会生成 src/index.js + wrangler.toml。
  5. 写代码。在 src/index.js 实现 fetch 入口(示例见第四节)。
  6. 本地调试。wrangler dev 本地起一个边缘运行时,http://localhost:8787 实时测,改完即生效。
  7. 部署上线。wrangler deploy,得到 https://my-worker.<你的子域>.workers.dev,全球边缘即可访问。
  8. (可选)绑 KV / R2。在 wrangler.toml 声明绑定(见第四节),让 Worker 直接读写边缘存储。

四、最小可跑示例

一个返回 JSON、并带一个静态问候的 Worker(src/index.js):

export default {
  async fetch(request, env, ctx) {
    const url = new URL(request.url);

    // 简单 API:/api/hello 返回 JSON
    if (url.pathname === '/api/hello') {
      return Response.json({ ok: true, msg: '来自边缘节点' });
    }

    // 默认问候
    return new Response('Hello from Cloudflare Worker!', {
      headers: { 'content-type': 'text/plain; charset=utf-8' }
    });
  }
}

绑定 KV 的 wrangler.toml 片段(部署时 env.MY_KV 即可用):

name = "my-worker"
main = "src/index.js"
compatibility_date = "2024-09-23"

[[kv_namespaces]]
binding = "MY_KV"
id = "你的_kv_namespace_id"

把 Worker 当 R2 的上传 / 鉴权网关时,再在 wrangler.toml 加 [[r2_buckets]] 绑定即可,部署到 Cloudflare Pages 同生态,零成本拼全栈。

五、7 个真实踩坑提醒

⚠️ 踩坑 2 — 免费层单请求只有 10ms CPU,重活会超时。解析大 JSON、循环很多次、调慢接口,超过 10ms CPU 就报 1102 exceeded CPU。对策:把重计算挪到后台任务或拆小请求;需要更长运行时间就升付费(50ms 起)。
⚠️ 踩坑 3 — KV 是「最终一致 + 写限频」。免费 KV 每天只有 1 千次写、10 万次读,而且写入后边缘节点同步有延迟,刚写的值在另一地读可能还是旧的。对策:别把 KV 当强一致主数据库;高频写场景换 Neon / Supabase。
⚠️ 踩坑 4 — *.workers.dev 子域在部分地区「可达性不稳定」。免费部署的默认域名,个别网络环境访问慢甚至不通。对策:把自有域名(已解析到 Cloudflare)绑定到 Worker / 路由,走自家域名更稳更可控。
⚠️ 踩坑 5 — 子请求上限 50 次 / 请求。免费层每个请求内部最多发 50 次 subrequest(fetch 调用),超了直接报错。对策:合并外部调用、加缓存、减少瀑布式 fetch;需要更多用付费计划(最高 1000)。
⚠️ 踩坑 6 — 别依赖「内存常驻」做跨请求状态。Worker 是事件驱动、实例可能随时复用也可能随时销毁,globalThis 缓存只是「尽力复用」而非保证。对策:跨请求状态一律放 KV / R2 / Cache API;内存只当临时缓存。
⚠️ 踩坑 7 — 免费层实时日志 / 调试能力有限。生产排错想看 wrangler tail 实时日志在免费层受限。对策:上线前本地 wrangler dev 充分测;关键路径打结构化日志,异常主动抛错便于追溯。
💡 组合拳终极版:Workers(边缘函数) + R2(大文件 / 图片,免流量费) + Pages(静态前端) + KV(边缘缓存) + Neon(按需唤醒的 PG) = 几乎零成本、全球可达的全栈小产品底座,且 Workers / R2 / Pages / KV 免费层均无需绑卡。本站的教程矩阵正是教您把它拼起来赚钱。

六、什么时候该付费

出现任一信号说明免费层到顶:每天请求超 10 万、单请求需要 >10ms CPU、要 Durable Objects / Queue / Workflows 这类高级绑定、要更高 SLA 或更多子请求。Cloudflare 付费按 请求量 + CPU 时长 计费,升级不中断服务,平滑过渡。

← 返回教程列表