小产品放图片、安装包、用户上传,选 Cloudflare R2 还是 Backblaze B2,主要看你的流量是「读得多」还是「存得多」。下载量大、存的东西不多,R2 不收出口流量费,账单几乎只剩存储费。存了几 TB 备份、很少往外读,B2 每 TB 的存储价不到 R2 的一半。
下面的价格都是 2026 年 10 月 15 日在两家官方定价页上查的。两家都兼容 S3 API,Spring Boot 项目里用 AWS SDK 或 Spring Cloud AWS 接 S3 的代码,换个 endpoint 和密钥基本就能切过去,所以这篇只算钱。
R2 的账怎么算
R2 定价文档(页面标注最后更新于 2026 年 10 月 1 日)把费用拆成三块:存储、A 类操作、B 类操作。出口流量不论哪种存储类型都免费。
| 项目 | 标准存储 | 低频访问存储 |
|---|---|---|
| 存储 | $0.015 / GB-月 | $0.01 / GB-月 |
| A 类操作(写、列举) | $4.50 / 百万次 | $9.00 / 百万次 |
| B 类操作(读) | $0.36 / 百万次 | $0.90 / 百万次 |
| 数据取回 | 不收 | $0.01 / GB |
| 出口流量 | 免费 | 免费 |
每月免费额度只给标准存储:10 GB-月存储、100 万次 A 类操作、1000 万次 B 类操作。低频访问没有免费额度,还有 30 天最短存储期,提前删也按 30 天收。
有几个细节容易漏。用量向上取整到下一个计费单位,100 万零 1 次操作按 200 万次算,1.1 GB-月按 2 GB-月算。PutObject、ListObjects、上传分片都算 A 类,GetObject、HeadObject 算 B 类。删除操作免费。没有权限、返回 401 的请求不计费,被人乱刷未授权请求不会算到你头上。
B2 的账怎么算
B2 定价页 的按量付费价是每 TB 每月 6.95 美元,按字节小时计费,账户里前 10 GB 免费。没有最小文件大小和最短存储期的费用。
出口流量的规则不一样。每月免费出口量是平均存储量的 3 倍,超出部分每 GB 0.01 美元。下载到合作的 CDN 和计算服务,或经它们下载,出口不限量免费,名单里有 Fastly、Cloudflare、bunny.net、CacheFly、CoreWeave、Equinix Metal、Vultr 和 phoenixNAP。
操作费几乎没有。按 B2 API 计价页,A、B、C 三类调用都免费,S3 兼容接口里的 PutObject、GetObject、ListObjectsV2 都在这三类里。只有 D 类的事件通知收费,每天前 2500 次免费,之后每 1 万次 0.004 美元。
拿三种用法各算一遍
下面按两家公开规则算月费,只算存储、操作和出口流量,1 TB 按 1000 GB 计。B2 按 U.S. West 区的公开价,没算批量折扣和年付合约。
第一种:工具站放图片和安装包
存 100 GB,每月往外下载 1 TB,上传 20 万次,读取 500 万次。
R2:操作都在免费额度里,出口不收钱,只付 90 GB 的存储费,约 1.35 美元。
B2:90 GB 计费存储约 0.63 美元。免费出口是 300 GB,多出的 700 GB 要 7 美元,合计约 7.63 美元。前面套了 Cloudflare 或 bunny.net 这类合作 CDN,出口免费,就只剩 0.63 美元。
第二种:存数据库备份和用户归档
存 2 TB,每月只往外读 50 GB,操作次数很少。
R2:1990 GB 的标准存储,约 29.85 美元。改用低频访问是每 GB-月 0.01 美元,约 20 美元,但读出来还要另付取回费。
B2:存储约 13.83 美元,50 GB 出口远低于 6 TB 的免费线,就是这个数。
第三种:小文件被高频读取
这是 R2 文档里自己举的例子:10 万个 100 KB 的文件,每天读 1000 万次。
R2:存储和写入都在免费额度里,但一个月 3 亿次读,扣掉 1000 万次免费还剩 2.9 亿次,按 0.36 美元每百万次是 104.40 美元。
B2:读取不收操作费,但 3 亿次乘 100 KB 大约是 30 TB 出口,存储才 10 GB,免费出口只有 30 GB。直连 B2 的话超出部分约 300 美元。套合作 CDN 就免费,而且 CDN 缓存命中后,大部分请求到不了 B2。
| 用法 | R2 | B2 直连 | B2 + 合作 CDN |
|---|---|---|---|
| 图片和安装包下载站 | 约 $1.35 | 约 $7.63 | 约 $0.63 |
| 2 TB 备份 | 约 $29.85 | 约 $13.83 | 约 $13.83 |
| 小文件高频读 | $104.40 | 约 $300 | 存储约 $0,另加 CDN 自身费用 |
低频访问存储值不值
R2 的低频访问存储单价便宜三分之一,可它把成本挪到了别处。文档里有个例子:1000 个 1 GB 的对象放进低频访问,只存 5 天就删掉,期间每个对象读 1000 次。按最短 30 天计费,存储照收 1000 GB-月,就是 10 美元,写入 9 美元,读取 0.90 美元,取回 1000 GB 再收 10 美元,一共 29.90 美元。同样规模的数据放标准存储一个月,官方例子是 14.85 美元。
所以低频访问只适合真正放着不动、至少存满一个月的东西。数据库备份勉强算,用户还会来下载的附件就别放进去。
B2 不分存储类型,也就没有这道选择题。它给大客户的优惠走另一条路:定价页写着可以按 1 到 5 年承诺容量签约,合约开始时一次付清整个周期的费用,价格在合约期内锁定。对还在找方向的小产品来说,按月付更灵活。
估算自己的账单要看哪几个数
先看存储总量和它每月的增长。再看每月出口流量,用 CDN 的话要分清有多少是回源流量。最后看请求次数,尤其是写入和列举。这三个数在 Nginx 日志、CDN 后台或者现有云厂商的账单里都能找到。
R2 那边,请求次数基本决定账单会不会超出免费额度。B2 那边,出口和存储的比例是否超过 3 倍才是关键。
账单之外的差别
R2 的成本跟请求次数走,B2 的成本跟出口流量走。用 R2 时,前端频繁列目录、HEAD 检查文件是否存在,都会吃 A 类和 B 类额度。ListObjects 算 A 类,单价是读取的 12.5 倍,最好别在每次页面加载时调用。
用 B2 时,3 倍是按整月平均存储量算的,刚上线、存储量很小但突然被转发下载的产品,最容易超线。
R2 和 Cloudflare 自家的 CDN、Workers 在同一张网里,配个自定义域名就能直接对外。B2 要做到出口免费,得自己把合作 CDN 接好,多配一层。
计费方式上,R2 按每天峰值存储量平均出 GB-月,再向上取整;B2 按字节小时。存储量变化大的时候,两家的账单会有些出入。
按上面三种用法的结果:下载为主、存储量小的产品,R2 的免费额度能覆盖不少小项目;备份、日志归档这类只进不出的数据,B2 的存储费更低;已经在用 Cloudflare 或 bunny.net 做 CDN 的,B2 加合作 CDN 在下载场景里也能把出口费压到零,代价是多维护一层配置。
更早有一篇 独立开发者穷鬼套餐 把一批免费服务列了一遍,这次只拆对象存储这一项,把价钱算到每个月。
价格按 2026 年 10 月 15 日查阅的 Cloudflare R2 定价、Backblaze B2 定价 和 B2 API 计价 复算,三种用法的月费与官价一致。
一起交流
分享你的思考,让讨论更进一步。