Cloudflare R2简介
R2 是 Cloudflare 推出的对象存储服务,主打零出口费用(也就是免流量费)和与 Amazon S3 兼容的 API,适合存储大量数据且需频繁访问的场景,完美解决附件存储的痛点:
更重要的是并且 R2 的免费额度非常的大,以下是R2的核心定价和免费额度:
流量免费,存、取等操作付费,容量付费。
免费额度及超出部分的计费方式如下:
| 名称 | 免费额度 | 计费套餐 |
|---|---|---|
| 存储 | 10GB | $0.015/GB/月 |
| A类操作 | 一百万次/月 | $4.50/百万次 |
| B类操作 | 一千万次/月 | $0.36/千万次 |
A类操作包括:
ListBuckets、PutBucket、ListObjects、PutObject、CopyObject、CompleteMultipartUpload、CreateMultipartUpload、Lifecycle、StorageTierTransition、ListMultipartUploads、UploadPart、UploadPartCopy、ListParts、PutBucketEncryption、PutBucketCors、PutBucketLifecycleConfiguration.
B类操作包括:
HeadBucket,HeadObject,GetObject,UsageSummary,GetBucketEncryption,GetBucketLocation,GetBucketCors,GetBucketLifecycleConfiguration.
| 操作类别 | 包含的 API | 解释 |
|---|---|---|
| A 类操作 | ListBucketsPutBucketListObjectsPutObjectCopyObjectCompleteMultipartUploadCreateMultipartUploadLifecycleStorageTierTransitionListMultipartUploadsUploadPartUploadPartCopyListPartsPutBucketEncryptionPutBucketCorsPutBucketLifecycleConfiguration |
写入、创建、修改、列举:上传对象、创建桶、分片上传、修改配置等 |
| B 类操作 | HeadBucketHeadObjectGetObjectUsageSummaryGetBucketEncryptionGetBucketLocationGetBucketCorsGetBucketLifecycleConfiguration |
读取、查询、获取元数据:下载对象、检查桶是否存在、获取配置信息等 |
| 免费操作 | DeleteObjectDeleteBucketAbortMultipartUpload |
删除操作:删除对象、删除桶、中止分片上传(完全免费,不消耗免费额度) |
全面且有效的设置防刷
Cloudflare R2 每月有免费的读取额度,这对大多数个人和中小开发者来说已经足够。但总有一些恶意行为者会利用这个特性,不断刷请求次数,导致巨额账单。
设置防刷的三个方法:
1.开启强制缓存
2.开启防盗链
3.设置速率限制
一、开启强制缓存
设置这个主要是为了防止被刷下载次数
「域名页面」->「规则」->「页面规则」->「创建页面规则」
(页面规则免费用户每个域名页面只能创建三个比较宝贵)

其中:
- URL:https://域名.com/* 要带https,后面 /*
- 浏览器缓存 TTL:1天(按需设置)
- 边缘缓存TTL:1个月(如果你经常更换图片的话,可以适当降低)
- 缓存级别:缓存所有内容
- 源服务器缓存控制:添加但不开启! (开启:缓存会遵循源站规则 关闭:缓存规则由CF控制)
保存页面规则
这样缓存规则就设置完毕了!此时如果有人打你,理论上图片都是CDN缓存给的,不会走到R2对象存储。
补充:
浏览器缓存TTL的意思就是,浏览器访问过一次后,就把文件缓存到本地。
接下来一定时间内,浏览器访问这个文件都直接调用缓存。
边缘缓存TTL的意思就是,当你访问过一次后,与你直接相连的CDN节点会缓存一份文件。
接下来一定时间内,通过这个节点访问这个文件都直接调用缓存。
TTL就是缓存有效期,过期后要重新缓存。
再次补充:
启用强制缓存的另一个设置
「域名页面」->「缓存」->「 缓存规则(Cache Rules)」
创建规则并选择 Cache Everything,确保开启 Edge Cache TTL。
缓存规则(Cache Rules)可以设置10个

根据实际路径需求进行匹配设置:
- 规则名称 (必需):随意填写方便区分
- 自定义筛选表达式
- 字段:主机名、等于、img.域名.com(图床域名)
- 缓存资格(必需):符合缓存条件
- 边缘 TTL(可选):忽略缓存控制标头,使用此 TTL--输入生存时间 (TTL) (必需):1年
- 浏览器 TTL(可选);替代源服务器,使用此 TTL--输入生存时间 (TTL) (必需):1年
- 放置位置:随意
对缓存规则(Cache Rules)的缓存密钥(可选)补充:
- 缓存密钥(可选):忽略查询字符串-打开

缓存规则(Cache Rules)这个设置的解释:
1. 缓存欺骗盔甲 (Cache Deception Armor)
-
作用:安全防护选项。防止黑客利用缓存漏洞窃取网站数据(例如用户信息、后台接口返回的 JSON 数据)。
-
使用建议:建议默认开启。开启后,即使实际资源返回的是动态敏感数据(如 HTML/JSON/API)且请求的 URL 结尾为
.jpg或.css,Cloudflare 也不会缓存它,从而避免数据泄露。
2. 按设备类型缓存
-
作用:根据访问者的设备(电脑、手机、平板)分别缓存不同的内容。
-
适用场景:如果网站采用了响应式设计(即:手机端看到移动版页面,电脑端看到桌面版页面),此开关必须开启。
-
不开启的后果:当第一个访问者(例如使用 iPhone)请求页面后,Cloudflare 会缓存该页面。后续使用 iMac 电脑访问同一网址的人可能会看到本该属于手机的页面,导致样式错乱。
3. 忽略查询字符串
-
作用:完全忽略 URL 问号
?后面的内容,只根据主要路径缓存。 -
适用场景:针对静态资源(图片、CSS 文件、JS 文件)。例如
/logo.png?v=1和/logo.png,对服务器来说通常是同一张图片。 -
不适用场景:针对动态页面或 API。例如电商网站的搜索
/shop?keyword=冰箱和/shop?keyword=空调必须区分开,因此不建议开启此选项。
4. 对查询字符串排序
-
作用:只在乎参数的含义,不在乎参数的顺序。
-
适用场景:当 URL 的参数顺序被 JS 或爬虫随机打乱时。
-
结果示例:开启此选项后,
/product?size=M&color=red和/product?color=red&size=M这两个 URL 被视为完全一样的对象,共用同一个缓存。
二、开启防盗链
防盗链的意思就是,只能通过你的域名,访问你的资源域名。
比如我只允许从我博客a.abc.com访问我的图床img.abc.com
这一步其实对防故意刷请求没什么用,但是可以防止别人搬你文章时,把图片链接直接搬过去。
这样你的图床就可以不用承担别人网站的访问了。
前往 「域名页面」->「安全性」->「安全规则」,「创建规则」

其中:
- 主机名:等于,img.你的域名.com (图床域名)
- And:右边添加一个 And(需要几个就添加几个)
- 引用方:不包含,www.你的域名.com(你的网站域名)
- 采取措施...:阻止
也就是说
引用方只要不包含 www.你的域名.com(你的网站域名)And(你需要多少就添加多少)
就会被阻止
三、设置速率限制
通过设置速率限制防止大量的恶意请求:
选择「域名页面」->「安全性」->「安全规则」->「速率限制规则」->「创建规则」
(速率限制免费用户每个域名页面只能创建一个非常宝贵)

其中:
- 规则名称:随意
- 字段:URL路径、包含、/
- 当速率超过...:100,10秒钟
- 然后采取措施…:阻止
这里重点是【当速率超过...】这个选项,推荐100甚至更多一点,不建议填写太低,很容易误伤;意思是同一个 IP 10 秒内请求超过多少张图片,就触发操作(按照你站点图片情况设置)