引言
为了让个人开发者更好的
白嫖使用Cloudflare Workers相关项目,先对其免费计划进行分析。
分点介绍
Workers和Pages
首先个人的小项目一般无需关注第一项,也就是我们只需要考虑请求次数即可。
那么十万次请求是什么概念呢?一天24小时,平均每小时最多4166个请求,那么项目的平均QPS(每秒查询数)就要小于1.157。
想象一下,如果你的个人项目,在24小时以内,每秒都至少有1.157个请求,那么这个项目所带来的商业价值将会支撑起你使用付费计划。
毕竟一个个人小项目,每天能够有几千次请求就已经算是不小的成功了。
Workers构建
这个没啥说的,个人部署项目是用不完的。
Workers 日志
同上,个人用不完。
耐用对象(Durable Objects)
免费计划核心限制
| 限制项 | 免费额度 | 说明 |
|---|---|---|
| 请求数 | 100,000 次/天 | 包括 HTTP 请求、RPC 会话、WebSocket 消息等 |
| 持续时间 | 13,000 GB‑秒/天 | 内存(GB)× 运行时间(秒)的累计值 |
| 行读取 | 5,000,000 次/天 | SQLite 数据库读取操作 |
| 行写入 | 100,000 次/天 | SQLite 数据库写入操作 |
| 存储 | 5 GB | 持久化存储空间 |
关键限制分析
1. 请求数是最主要的瓶颈
- 每天 100,000 次请求,平均每秒约 1.157 次请求(QPS)。
- 如果应用存在访问高峰(如白天 8 小时集中 80% 流量),峰值 QPS 可能达到 5–10 倍的平均值,即约 6–12 QPS。
2. 持续时间限制通常不会先触及
假设每个请求的 Durable Object 实例使用 128 MB(0.125 GB)内存,平均运行 100 毫秒(0.1 秒),则每次请求消耗约 0.0125 GB‑秒。
100,000 次请求仅需 1,250 GB‑秒,远低于 13,000 GB‑秒的限额。
3. 数据库操作限制相对宽松
- 若每次请求平均触发 5 次读取,100,000 次请求对应 500,000 次读取,仅用掉读取限额的 10%。
- 写入限额与请求数相同(100,000 次),若每次请求伴随一次写入,则写入限额与请求数同时耗尽。
用户承载量估算
承载用户数主要取决于 每个用户每天产生的请求数,下表列出几种典型场景:
| 应用类型 | 每个用户每天请求数 | 可承载 DAU | 说明 |
|---|---|---|---|
| 轻量级 API/后台任务 | 1–2 | 50,000–100,000 | 如天气查询、定时推送等 |
| 中等交互 Web 应用 | 10–20 | 5,000–10,000 | 典型 SPA,每次操作产生 1–2 个 API 请求 |
| 重度交互 Web 应用 | 50–100 | 1,000–2,000 | 页面包含大量资源(图片、脚本)或频繁轮询 |
并发用户数估算(以中等交互场景为例)
- 假设每个用户每天发起 10 次请求,则每天可支持 10,000 个会话。
- 平均会话时长 10 分钟(600 秒),每天考察时间 24 小时(86,400 秒)。
平均并发用户数 ( C = \frac{10,000 \times 600}{86,400} \approx 69.4 ) 人。
峰值并发用户数 ( C’ \approx C + 3\sqrt{C} \approx 69.4 + 3 \times 8.3 \approx 94.3 ) 人。
注意事项
- 实际用户行为差异大:上述估算基于典型假设,若您的应用每个页面加载产生 50+ 请求(如富媒体站点),用户数会相应降低。
- 其他资源可能先耗尽:如果应用频繁进行数据库写入(如聊天记录),100,000 次写入可能先于请求数耗尽。
- 免费计划适合阶段:该额度非常适合个人项目、原型验证、小型工具或低频服务,能够支撑数千到数万 DAU 的稳定运行。
- 监控与优化:建议在 Cloudflare Dashboard 中监控各项用量,通过缓存、合并请求、减少不必要的数据库操作等方式优化资源使用。
总结
Cloudflare Durable Objects 免费计划能为个人或小型项目提供相当可观的承载能力。在中等交互强度(每用户每天约 10 次请求)下,可支持约 5,000–10,000 日活用户,并发用户约 70–95 人。若您的应用更轻量,甚至可接近 10 万日活。建议根据实际应用类型参考上表进行估算,并在早期关注请求数的使用情况。
D1 数据库
以作者实际使用了一年多的经验来看,在抛弃了传统的关系型数据库的联表查询后,并且没有太多的写入操作(例如:用户资料的更新、社区的用户评论等),那么在中等交互强度的应用中,可支持约五千–两万日活用户,并发用户约数百人。若您的应用更轻量(如工具类),甚至可接近十万日活。
灵活利用KV、本地缓存是解决行读取的一个重要方式。
KV
KV 适合做 配置中心 / 灰度发布 / 轻量缓存
KV每天最多 100,000 次读取操作,与Workers的每日请求数相同,所以不用担心会超出限制。
限制
请不要将KV当做Redis类的缓存服务,其根本承担不起频繁的读写!尤其是写操作!!!
典型用途
- 配置中心
- 功能开关(Feature Flag)
- 灰度 / A/B
- 轻量缓存(确保非常轻量才行)
- 白名单 / 黑名单
KV 与其他存储对比
| 存储 | 特点 | 适用 |
|---|---|---|
| KV | 快、简单 | 配置 / 灰度 |
| D1 | SQL | 业务数据 |
| Durable Object | 强一致 | 计数 / 会话 |
如果你已经在用 Cloudflare Worker,KV 几乎是必用组件。
Workers AI
每天最多 10,000 个神经元(Neurons)。
这个神经元呢,简单理解一下:
神经元 = (输入tokens + 输出tokens)* 模型系数
不同模型的系数不一样,我自己测试了llama-3.1-8b-instruct的模型,其输入、输出、消耗如下:
|
|
详细的定价请参照Workers AI 定价 | Cloudflare 官网
使用超了并不会转为付费计划,而是提示错误。
所以这个AI随便玩玩就可以了,别指望把这个部署到小龙虾🦞上,那token费用可贵可贵了。
Queues
消息队列,搞过微服务的应该都清楚用法了。
免费计划:每日一万次操作(读/写/删除),消息最多保留24小时。
使用场景
- 异步任务处理
- 图片/视频处理(压缩、水印、格式转换)
- 邮件发送、短信通知
- 数据导出/报表生成
- 事件驱动架构
- 用户注册后触发欢迎邮件、初始化数据
- 内容发布后触发 SEO 优化、社交分享
- 工作流解耦
- 将耗时操作从主请求中剥离,提升响应速度
- 实现重试机制和死信队列(DLQ)
小技巧
- 批量处理:Queues 支持批量消费,减少 API 调用次数
- 并发控制:通过 Worker 的 queue处理器自动管理并发
- 延迟消息:使用 delaySeconds参数实现定时任务
计算
实际容量换算
- 单条消息 ≤ 64KB:1 次操作
- 典型任务流程(写入→读取→删除):3 次操作
- 每日可处理消息数:约 3,333 条完整流程消息(10,000 ÷ 3)
个人项目典型用量
- 用户注册邮件发送:假设每日 100 新用户 → 300 次操作
- 图片处理任务:每日 1000 张图片 → 3,000 次操作
- 数据同步任务:每小时 10 次同步 → 每日 720 次操作
- 日志处理:每日 1,000 条日志 → 3,000 次操作
总计约 7,020 次操作,仍在免费额度内。
Hyperdrive
这个我没有使用过,但据我了解,其主要作用就是让Workers项目使用已有的外部数据库。
要知道,Workers项目是 Serverless 型项目,每次对外部数据库的请求都会创建链接,而我们正常项目启动后就会建立数据库连接池,应用内所有的请求都是共用这个池子里的链接。
如果流量上来,数据库会直接挂掉的。
并且Hyperdrive还会对访问这些数据库提供加速功能(全球范围)。
不过每天十万次查询,感觉还是有点少的,不能当做主数据库使用。
Vectorize
矢量数据库,主要就是语义搜索,使用场景有:文档搜索、文章推荐、内容去重和归类等。
这个暂且不表,后续等我使用过一段时间后再讨论免费计划够不够用。
浏览器呈现
Browser Rendering 允许开发者在无服务器环境中通过API或Workers控制无头浏览器,实现网页渲染、截图、PDF生成和数据抓取等自动化操作。
对于免费用户,每天只有十分钟的使用时间…emmm…聊胜于无吧…
总结
总体来说,免费计划用于我们的小项目完全足够,当用户量大起来时,流量带给你的收益足以支撑起更换为付费计划。(除非你没有盈利目的。)
Cloudflare就是个人开发者的赛博活佛!感谢Cloudflare看不上这三瓜俩枣😂
附录
参考
版权信息
本文原载于 彩虹兔の博客,遵循 CC BY-NC-SA 4.0 协议,复制请保留原文出处。