
1. 从免费到付费Cloudflare Workers 的进阶之路如果你和我一样从 Cloudflare Workers 的免费套餐开始用它来部署一些简单的 API 代理、处理图片或者做个轻量级的网站后端那你一定对它的“慷慨”印象深刻。免费套餐每天提供 10 万次请求对于个人项目和小型应用来说几乎就是“无限流量”。但事情总在变化当你的项目开始增长或者你需要一些更强大的功能时就会自然而然地撞上免费套餐的天花板。这时候付费文档就成了你绕不开的“藏宝图”。然而Cloudflare 的官方文档虽然详尽但关于付费计划的具体细节、成本估算和高级功能的使用常常散落在各处需要你像侦探一样去拼凑。这篇文章就是把我自己从免费用户过渡到付费用户并深入研究 Workers 付费能力过程中的所有发现、踩过的坑和算过的账整理给你。简单来说Cloudflare Workers 的付费世界核心围绕两个产品Workers Paid Plan和Workers Unbound。前者是传统付费计划适合有明确资源上限和低延迟需求的场景后者则是“无服务器”的终极形态按实际使用量付费适合突发流量或计算密集型任务。选择哪一个不仅仅看价格更要看你的应用模型。接下来我会带你彻底拆解这两者的区别并深入那些在免费套餐里无法触及却能极大提升你应用能力的付费功能比如更长的执行时间、更大的内存、专属的 KV 存储额度、D1 数据库、R2 存储集成以及最重要的——如何精确地估算和控制你的成本避免月底账单惊吓。2. 付费计划深度对比Workers Paid vs. Workers Unbound这是你做决定前必须搞清楚的核心问题。很多人一看“付费”就点了升级却没意识到 Cloudflare 提供了两种截然不同的付费模型。理解它们的本质差异是避免资源浪费和成本失控的第一步。2.1 Workers Paid Plan可预测的“专用资源”你可以把 Workers Paid Plan 想象成租用了一台有固定配置的虚拟服务器只不过它是以函数即服务FaaS的形式呈现。它的计费模式是月度固定费用 超额请求费。固定资源配额每月 5 美元按年付费则平均每月约4.17美元的价格你获得的是一个固定的资源包。这包括每月 1000 万次请求是免费的100倍、每次请求最高 50 毫秒的 CPU 时间免费为10ms以及 128MB 的内存免费为128MB但付费计划下可用更久。关键在于这些资源是“预留”给你的。适用场景这种模式非常适合流量和负载相对稳定、可预测的应用。例如一个企业官网的 API、一个每日定时运行的数据处理任务、或者一个用户量平稳的工具型应用。你知道你的应用大概每月需要多少请求量并且希望执行时间有保障50ms CPU时间意味着可以运行更复杂的逻辑那么固定费用的 Paid Plan 能给你带来确定性和安心感。成本控制成本是透明的。每月 5 美元用满 1000 万次请求。如果超过超出的部分按每百万次请求 0.5 美元计费。你可以非常容易地预算成本。我最初升级的就是这个计划因为我有一个天气 API 服务日均请求在 20 万次左右月度总量在 600 万次上下完全在 1000 万次的额度内。升级后最直观的感受不是速度而是稳定性。免费套餐下的 CPU 时间限制10ms有时会让一些包含简单 JSON 解析和外部 API 调用的请求边缘超时而在 Paid Plan 下50ms 的 CPU 时间宽裕了很多再也没有因超时而导致的错误。2.2 Workers Unbound真正的“按量付费”Unbound顾名思义就是“无界”。它是 Cloudflare 为了应对传统 FaaS 冷启动、执行时长限制和成本模型不灵活等问题推出的产品。它的计费模式是按实际使用量付费没有固定的月度费用也没有硬性的每次请求 CPU 时间上限。核心优势执行时间长达 30 秒HTTP 请求甚至更长队列消费者。这是与 Paid Plan 和免费套餐10ms的代际差距。这意味着你可以在 Worker 里进行视频转码预览、批量处理图像、运行复杂的机器学习推理比如用 ONNX 模型或者处理一个需要多次循环和计算的任务。计费维度Unbound 的计费稍微复杂一些主要看两个指标请求次数和CPU 时间。CPU 时间以“毫秒-秒”为单位计费并且区分了不同地域北美、欧洲、亚太等价格略有差异。此外它还有少量的每日免费额度。适用场景所有需要长时间运行、计算密集型或流量波动巨大的场景。例如图像/视频处理用户上传图片后实时生成多种缩略图。数据聚合与转换从多个 API 获取数据进行复杂的清洗、合并后再返回。轻量级批处理替代一部分需要启动虚拟机才能完成的定时任务。突发流量应用营销活动可能导致流量瞬间暴涨Unbound 能自动缩放你只为暴涨的那部分计算时间付费平时流量低谷时几乎不花钱。这里有一个关键的思维转变从“我买了什么资源”变为“我实际用了什么”。对于 Unbound你需要更关注你的代码效率因为低效的循环或算法会直接燃烧你的 CPU 时间也就是你的钱。注意Unbound 的冷启动时间可能略高于标准的 Workers因为它需要调度更长时间运行的计算资源。对于需要极低延迟毫秒级的 API如果逻辑简单Paid Plan 可能仍是更好选择。2.3 对比表格与选型建议为了让选择更清晰我整理了核心对比特性Workers (免费)Workers Paid PlanWorkers Unbound月度费用0 美元5 美元 (固定)0 美元 (仅按使用量付费)包含请求数/月10 万次1000 万次有每日免费额度之后按量付费每次请求最大 CPU 时间10 毫秒50 毫秒30 秒(HTTP) / 15分钟 (队列)内存128 MB128 MB最多 256 MB计费模式额度内免费固定月费 超额请求费按请求次数和 CPU 时间计费最佳场景个人项目、原型、超低流量 API流量稳定、需保障性能的中小型应用计算密集型、长时任务、流量波动大的应用我的选型心得 如果你的应用请求量可预测且单次请求逻辑在50ms CPU时间内能完成优先选Paid Plan。确定性高成本固定管理简单。 如果你的应用偶尔需要处理重型任务如图片处理或者你完全无法预测流量如病毒式传播的应用或者你的核心需求就是长时间运行那么Unbound是不二之选。初期成本可能极低但需要设置预算告警以防意外。3. 超越计算付费解锁的核心存储与集成能力升级付费计划后你获得的不仅仅是更强的计算能力更是一把打开 Cloudflare 庞大生态系统大门的钥匙。许多强大的服务在免费套餐下要么不可用要么有极严格的限制。3.1 KV 命名空间从“体验”到“生产”免费套餐也提供 KV键值存储但限制非常严格只读且仅限绑定一个命名空间。这对于需要动态写入如用户会话、计数器、配置管理的生产应用来说是致命的。付费后KV 才展现出真正威力读写权限你可以通过 Worker 代码自由地进行put、delete操作。命名空间数量Paid Plan 和 Unbound 都提供更多可绑定的命名空间方便你按业务如用户数据、系统配置、缓存进行隔离。存储容量与操作次数付费计划包含更高的月度写入次数和存储空间。例如Paid Plan 通常包含 1000 万次读取、100 万次写入和 1GB 存储。这对于大多数中小型应用已经足够。实操技巧将 KV 用作高频访问数据的缓存层。例如我从第三方 API 获取天气数据该 API 有调用频率限制且较慢。我让 Worker 先检查 KV 中是否有缓存键名如weather:city:shanghai如果没有或已过期再调用外部 API并将结果写入 KV 并设置 TTL生存时间。这极大地降低了延迟和外部 API 调用成本。在付费套餐下我可以放心地执行写入操作。3.2 D1 数据库原生集成的 SQLiteD1 是 Cloudflare 基于 SQLite 打造的服务器无服务器数据库。免费套餐有使用限制而付费后才能真正用于生产。免费限制免费套餐的 D1 数据库有存储空间和操作次数限制且可能不支持数据库备份等高级功能。付费优势付费后你可以创建更大的数据库执行更多的查询操作并且可以使用时间点恢复功能——这是数据安全的生命线。你可以将数据库恢复到过去 30 天内的任意一秒。使用场景D1 非常适合需要关系型数据模型但又不愿管理传统数据库服务器如 PostgreSQL的中小型应用。博客评论、用户配置、产品目录等都很适合用它。在 Worker 中你可以直接使用fetch风格的 API 或更友好的 ORM如 Drizzle来操作 D1。踩坑记录D1 的本地开发体验和远程生产环境有时会有细微差异。特别是在使用原生 SQLite 的datetime(‘now’)函数时要注意时区问题。生产环境的 D1 默认是 UTC 时间。我的建议是在 Worker 代码中统一使用new Date().toISOString()来生成时间戳存入数据库避免时区混淆。3.3 R2 存储媲美 S3 但无出口费用R2 是 Cloudflare 的对象存储服务其最大卖点是零出口带宽费用。这意味着从 R2 下载数据到互联网不收费只收存储费和操作费PUT/GET等。这对于存储和分发大量静态资产图片、视频、下载包的应用来说是革命性的。免费套餐的 R2 有存储和操作额度。付费后额度大幅提升并且你可以将 R2 与 Workers 无缝集成实现强大的功能动态图片处理用户上传图片到 R2通过一个 Unbound Worker 读取图片、进行缩放、裁剪、格式转换然后将处理后的新图片存回 R2 或直接返回给用户。整个过程无需担心出口流量成本。自定义 CDN 逻辑你可以用 Worker 编写复杂的缓存规则、访问权限控制比如生成临时预签名下载链接或者根据请求头如User-Agent返回不同版本的资源。成本估算示例假设你有一个应用每月新增 100GB 图片存储进行 1000 万次 GET 操作用户查看图片并产生 10TB 的出口流量。在传统云服务商如 AWS S310TB 出口流量费用可能高达 900 美元以上。在 Cloudflare R2这 10TB 出口流量费用为0 美元。你只需支付约 1.5 美元的存储费按 100GB 算和约 5 美元的操作费每百万次操作 0.36 美元。成本差异天壤之别。4. 实战成本估算与账单监控指南这是从免费过渡到付费最令人焦虑的部分。Cloudflare 的计费项较多如果不加监控确实可能产生意外账单。以下是我总结的实战方法。4.1 主要计费项拆解Workers Paid Plan固定费用5 美元/月。超额请求每月超过 1000 万次后每百万次请求 0.5 美元。注意此计划下的 CPU 时间、内存包含在固定费用中不额外计费除非严重超标。Workers Unbound请求次数每百万次请求约 0.15 - 0.30 美元因地域而异。每日有 10 万次免费请求。CPU 时间这是大头。每毫秒-秒CPU-ms约 0.0000012 - 0.0000015 美元因地域而异。听起来很小但累积起来很快。每日有 5 万 CPU-ms 免费额度。示例计算假设你的 Unbound Worker 平均每次请求执行 200 毫秒 CPU 时间每月处理 100 万次请求。请求费用1M * $0.00000015/次 ≈ $0.15CPU 时间费用1M 请求 * 200 ms/请求 200000000 ms 200000 CPU-ms。200000 * $0.0000012/CPU-ms ≈ $0.24总费用约 $0.39。这比 Paid Plan 的 5 美元便宜得多。但如果你有 1000 万次同样规格的请求总费用就变成约 $3.9仍然比 Paid Plan 便宜且享受了 30 秒的执行时长上限。附加服务KV超出套餐额度后按读写操作次数和存储量计费。D1按数据库操作次数、存储量和时间点恢复快照存储计费。R2按存储容量、A 类操作PUT LIST等、B 类操作GET计费。出口免费。4.2 如何精确估算与监控利用仪表板和日志Cloudflare 仪表板的 Workers 部分有详细的用量图表。但更精细的是Workers Trace Logs。在 Worker 设置中开启它你可以在每次请求的日志中看到精确的CPU 时间和执行时间。这是你优化代码、估算成本的第一手资料。为 Unbound 设置预算告警在 Cloudflare 账户的 “Billing” 页面你可以设置基于支出的预算告警。我强烈建议为 Unbound 服务设置一个月度预算比如 10 美元并绑定邮箱。当预测费用或实际费用达到阈值时你会立即收到通知。本地测试与性能剖析在wrangler dev本地开发时虽然不能完全模拟生产环境的性能但你可以通过代码逻辑来估算。避免在 Worker 中进行O(n^2)或更复杂的循环操作。对于必须进行的复杂计算考虑是否可以拆分成多个步骤或者利用缓存KV来避免重复计算。使用版本控制和灰度发布在对 Worker 进行重大逻辑更新时使用 Workers 的版本和环境功能。先发布到一个生产环境下的子域名如new-feature.yourdomain.com进行流量测试和成本观察确认无误后再将流量切到主版本。我的监控策略我为所有生产环境的 Unbound Worker 都开启了 Trace Logs并写了一个简单的内部监控脚本本身也是一个 Worker定期去查询最近一小时的日志计算平均 CPU 时间。如果发现某个 Worker 的平均 CPU 时间异常飙升比如因为一个低效的新正则表达式脚本会通过一个 Webhook 通知到我的团队聊天工具里让我们能第一时间介入排查。