小产品放图片、安装包、用户上传,选 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 计价 复算,三种用法的月费与官价一致。

— 感谢阅读 —
广告

一起交流

分享你的思考,让讨论更进一步。