Workers 全栈便宜的前提,是你的动态请求、CPU、数据库扫描、对象存储读取、AI 推理和向量检索都被单独记账。把 1K、10K、100K MAU 直接换成月费,通常会低估图片读取、D1 全表扫描和 AI 输出 token,也会高估纯静态页面的 Workers 成本。
这次比对日期是 2026-05-24。价格只引用 Cloudflare 官方 Workers、Workers AI、D1、R2、Vectorize 页面;旧文里没有官方来源的「0-100K MAU 月账单区间」「D1 写入 QPS」「中国节点延迟」已经删掉。
2026 年 5 月官方价格表
| 服务 | 免费额度 | Paid / 超额口径 | 这项怎么进账单 |
|---|---|---|---|
| Workers | 100,000 请求/天;每次调用 10 ms CPU | Paid 最低 5 美元/月;含 1000 万请求/月,超出 0.30 美元/百万请求;含 3000 万 CPU ms/月,超出 0.02 美元/百万 CPU ms | API、SSR、Webhook、Cron、Queue Consumer 调用 |
| Workers AI | 10,000 Neurons/天 | Paid 超出免费额度后 0.011 美元/1000 Neurons;不同模型有不同 token 等价价格 | LLM、embedding、vision、audio 等模型调用 |
| D1 | 500 万 rows read/天;100,000 rows written/天;5 GB total | Paid 含 250 亿 rows read/月、5000 万 rows written/月、5 GB 存储;超出读 0.001 美元/百万行、写 1 美元/百万行、存储 0.75 美元/GB-month | SQL 查询扫描行数、写入行数、数据库大小 |
| R2 Standard | 10 GB-month;100 万 Class A/月;1000 万 Class B/月;互联网出口免费 | 存储 0.015 美元/GB-month;Class A 4.50 美元/百万次;Class B 0.36 美元/百万次;出口免费 | 上传、列目录、读取对象、图片和文件下载 |
| Vectorize | 3000 万 queried vector dimensions/月;500 万 stored vector dimensions | Paid 含 5000 万 queried dimensions/月、1000 万 stored dimensions;超出查询 0.01 美元/百万维,存储 0.05 美元/1 亿维 | embedding 搜索、RAG 检索、相似内容召回 |
这张表里最值得盯的是单位。Workers 不是只按请求数,CPU ms 也会收费;D1 不是只看返回行数,而是看扫描行数;R2 没有互联网出口费,不等于读取操作免费;Vectorize 不是按「向量条数」单独计费,而是条数乘维度再叠加查询次数。
Workers:5 美元不是完整账单
Workers Paid 的 5 美元/月更像平台底座:你获得 1000 万请求/月、3000 万 CPU ms/月,以及更高的 Workers 平台额度。超出后,请求数和 CPU ms 各自加钱。
Cloudflare 官方给过一个很适合做心算的例子:1500 万次请求/月、平均每次 7 ms CPU,合计约 8 美元/月。拆开看,5 美元是订阅费,超出 500 万请求是 1.50 美元,CPU 超出 7500 万 ms 是 1.50 美元。
纯静态资源不要混进动态请求测算。Workers Static Assets 的静态请求不按 Worker invocation 计费;如果你的 SaaS 是静态前端加少量 API,真实账单通常取决于 API、Webhook、鉴权和 SSR,而不是总页面浏览量。
D1,查 rows read,再谈便宜
D1 的计费口径很直接:rows read、rows written、storage。免费层每天 500 万 rows read、10 万 rows written、总计 5 GB;Paid 包含每月 250 亿 rows read、5000 万 rows written 和 5 GB 存储。
独立开发者最容易把 rows read 算错。一个列表页返回 20 条记录,如果排序、筛选字段没有索引,D1 可能扫描几千行;账单看扫描行,不看最后返回给用户的 JSON 有多少行。
上线前至少把这三类查询单独看一遍:
| 查询类型 | 常见问题 | 成本处理 |
|---|---|---|
| Dashboard 列表 | ORDER BY created_at 没有合适索引 | 给排序和筛选组合建索引,用分页游标代替深分页 |
| 搜索框 | 模糊查询扫全表 | 小表可接受,大表换全文搜索或外部搜索服务 |
| 数据报表 | 每次打开页面实时聚合 | 用 Cron 预聚合,把报表结果写回 D1 或 R2 |
D1 本身不单独收数据库 compute,也不收 D1 数据出口费;查询结果序列化、业务逻辑计算、API 响应仍然会进入 Workers 的 CPU ms。
R2:出口免费,读取操作不是
R2 Standard 当前价格是 0.015 美元/GB-month,免费层包含 10 GB-month、100 万 Class A、1000 万 Class B,互联网出口免费。这个口径对图片、附件、模型文件、导出包都很友好,但不能把「出口免费」理解成「怎么读都免费」。
Class A 通常是写入、列目录、multipart upload 这类改变或枚举状态的操作;Class B 通常是读取对象和元数据。图片站、头像系统、公开下载页如果没有 Cloudflare Cache,用户每次命中源站对象都会消耗 Class B。
R2 Infrequent Access 的存储单价更低,但读取有 data retrieval 费用,Class A/B 也更贵,并且有 30 天最短存储时长。独立开发者的默认选择仍然应是 Standard;只有冷数据归档、低频下载包,才值得单独算 Infrequent Access。
Workers AI:别把所有模型写成一个单价
Workers AI 的底层计量单位是 Neurons。免费额度是每天 10,000 Neurons;Paid 账户超出后按 0.011 美元/1000 Neurons 计费。Cloudflare 页面同时列出每个模型的 token 等价价格,便于和别的 LLM 服务比较。
这意味着 Workers AI 不能只写一个「每 100 万 token 多少钱」。同样是 LLM,@cf/meta/llama-3.2-1b-instruct、@cf/meta/llama-3.1-70b-instruct-fp8-fast、@cf/openai/gpt-oss-120b 的输入和输出价格都不同;embedding 模型也有自己的价格表。
如果你的 SaaS 只是做标题改写、摘要、分类,按小模型做默认配置,再在后台记录每次调用的 model、input tokens、output tokens 和 Neurons。没有这四列,后面只能靠总账单倒推,很难判断是模型贵、输出太长,还是重试策略出了问题。
Vectorize:用维度算,不用条数猜
Vectorize 已经 GA,价格按两个维度:queried vector dimensions 和 stored vector dimensions。免费层包含每月 3000 万 queried dimensions 和 500 万 stored dimensions;Paid 包含每月 5000 万 queried dimensions 和 1000 万 stored dimensions。
一个 768 维 embedding,存 10,000 条就是 768 万 stored dimensions。每次查询还会把查询向量和被检索集合一起算进 queried dimensions;所以 RAG 产品的成本和「文档量、维度、查询次数、召回范围」同时相关。
小型知识库可以先按 384 或 768 维做索引,把 topK 控制在业务真的需要的范围内。中文独立产品常见的错误,是一开始就用 1536 维、全量文档、过大的 topK,然后发现语义检索账单比数据库还难解释。
一个小型 SaaS 该怎么估算
不要从 MAU 开始填表,从日志和产品动作开始。下面是更接近 Cloudflare 账单的测算模板:
| 产品动作 | 需要记录的用量 | 对应账单项 |
|---|---|---|
| 登录、鉴权、API 请求 | 每月动态请求数、平均 CPU ms | Workers 请求、Workers CPU ms |
| Dashboard 列表和详情页 | rows read、rows written、数据库大小 | D1 读行、写行、存储 |
| 上传图片、导出文件、下载附件 | GB-month、Class A、Class B、缓存命中率 | R2 存储、R2 操作 |
| AI 摘要、分类、客服回复 | model、input tokens、output tokens、Neurons | Workers AI |
| RAG 搜索、相似推荐 | 向量条数、维度、月查询次数、topK | Vectorize |
一个偏 CRUD 的 B2B 小工具,常见成本会集中在 Workers Paid 的 5 美元和少量 D1/R2 超额。一个 AI 图片、文档问答或内容处理产品,成本中心会更早转到 Workers AI、R2 Class B、Vectorize 查询维度。
哪些旧数字不要再引用
旧文里的「10K MAU 约 10 美元」「50K MAU 约 60 美元」「100K MAU 约 150 美元」已经不适合作为结论。MAU 和 Cloudflare 账单之间缺少关键变量:每个用户多少动态请求、平均 CPU ms、D1 查询是否扫表、R2 是否被缓存、AI 输出多长、Vectorize 查询多少维。
同样不再引用「D1 单库 1000 QPS」「单事务 100MB」「国内某运营商延迟 100-200ms」这类无官方来源数字。它们可能来自旧测试、社区经验或特定时间窗口,不适合放进 2026 年价格文章。
可保留的判断只有一个:Cloudflare 全栈适合先把计算、数据库、对象存储、AI 和向量检索放在同一个开发者平台里跑起来;等某一项账单变大,再按用量迁移到更专门的服务。
从中国办公环境调试 Cloudflare 怎么办
跨境独立开发者常见卡点不是价格,而是本地调试和部署链路不稳定:GitHub Actions 拉依赖慢、Wrangler 发布中断、Cloudflare Dashboard 打开后请求超时。这些问题不会改变 Cloudflare 账单,但会影响上线节奏。
如果团队在多个地点维护同一个 Cloudflare 账户,可以给负责发布的人固定一套工作环境,并使用海外服务跑 GitHub Actions / Cloudflare 的稳定线路承载部署、账单比对和生产后台操作。
上线前检查清单
- 在 Workers dashboard 里看动态请求数,不把静态资源请求混入 API 成本。
- 在 Workers Logs 或 Trace Events 里抽样记录 CPU ms,确认是否接近 3000 万 CPU ms/月。
- 在 D1 的
meta.rows_read和meta.rows_written里找扫描行数最高的查询。 - 给 R2 开缓存策略,单独记录 Class A、Class B 和 GB-month。
- Workers AI 每次调用记录 model、input tokens、output tokens、Neurons。
- Vectorize 估算时写清楚向量维度、存储条数、月查询次数和 topK。
- 预算表里给 Cloudflare 价格页留一列比对日期,价格变更时只更新来源,不改业务假设。
相关阅读
- Cloudflare Pages 国内速度排错:选了 Cloudflare 全栈后,国内用户的访问速度优化
- Vercel 国内访问慢的修复方法:如果未来从 Cloudflare 迁到 Vercel 的国内速度对比
- Next.js 出海 SaaS 模板:Cloudflare 全栈之外的另一种技术选型