免费玩转Cloudflare-14:用 Cloudflare R2 自己搭一个永久免费、还带 CDN 加速的图床
导读:免费图床不是限速就是偷偷压缩,动不动还跑路。这篇教你自己用 Cloudflare R2 搭一个图床,免费额度管够、还能套 CDN 加速,全程 10 分钟,照着点就行。现成图床,坑比图多
写博客、记笔记、做公众号,谁还没被图床折磨过?
免费图床呢,要么给你悄悄压画质,要么访问限速,图片加载转半天。好不容易找到个顺手的,隔半年告诉你「业务调整,停止服务」——得,几千张图全得搬家。
付费的又嫌贵,一个月几块钱看着不多,可咱就放点博客配图,图啥呢?
所以我索性自己折腾了一套:用 Cloudflare R2 对象存储 搭图床。免费额度内不花一分钱,套上它自家的 CDN 之后,读取请求基本归零,等于白嫖。 关键是 S3 协议兼容,写博客拖图上传很顺手。
先说清楚它给的免费额度,确实是给个人用户准备的:
• 10 GB 存储 :放博客配图,只要不是拿它当图库站,这辈子都用不完。
• A 类操作每月 100 万次 :上传、改结构算 A 类。你一年也传不了 100 万张图吧?
• B 类操作每月 1000 万次 :读图片算 B 类。本来最容易超,但后面套了 CDN 就另说了。
A 类和 B 类啥区别?一句话:A 是「写」,B 是「读」。你往 R2 传一张图,记一次 A;别人打开你网站看这张图,记一次 B。
重点在 B 类。R2 支持绑自定义域名,绑完之后图片就进了 Cloudflare 的 CDN 缓存。用户看图,请求被 CDN 拦下来直接返回,根本不会打到 R2 上,B 类操作自然就接近 0。缓存失效才回源一次,那点量,免费额度远兜得住。
一句话:只要别超 10 GB,基本就是永久免费。
不过得泼盆冷水:Cloudflare 在国内没有面向普通用户的节点,国内用户访问速度一般。如果你的网站主要服务国内读者,CF 这套体验真不算好。这种场景我更建议直接上国内云,对象存储、云服务器新用户首单经常打到骨折,走官方渠道还不收额外手续费(链接我放文末了)。R2 适合海外业务、或者像我这样拿它当图床顺带折腾的。
操作步骤 第一步:开通 R2 订阅
进 Cloudflare 后台,左侧菜单「存储和数据库」里找到 R2 对象存储,点开进「概述」。
要用 R2,得先把它订阅到账户。因为额度用超了会扣费,所以得先绑一张付款卡。
国内发行的 VISA 信用卡完全能用,绑上就行。
点「将 R2 订阅添加到我的账户」,会弹个安全计费提醒——告诉你超额会收费。放心,不超额就不扣钱,点激活就完事。激活成功,订阅就挂上了。
第二步:建个存储桶
回到概述页,右上角点「创建存储桶」。
桶(Bucket)就是放图的地方,一个网站建一个,后面统计用量也清楚。名字随便起,位置按你用户群选:主要服务东南亚这类海外用户,选亚太;要是国内业务为主,前面说了,直接放弃 CF 吧。存储类保持默认的「标准」就行。点创建,搞定。
创建完回概述,能看到已经产生几次 A、B 类操作了,那是创建过程本身消耗的,正常现象。
第三步:绑域名、套 CDN
进桶的「设置」页,找到「自定义域」,点添加,填个二级域名(比如 img.你的域名.com),继续。
我的域名本来就托管在 Cloudflare,所以它直接问我要不要自动加 DNS 记录——当然要,省得自己配。
点「连接域」,状态变成「已启用」就成功了。
直接访问那个域名试试,这时候会提示「没有找到对象」——别慌,这说明域名已经通了,只是桶里还没东西而已。
直接访问域名试一下,404,是正常的
回到桶里,随便传张图测试。
传好后点「对象」列表里那个蓝色文件名,就能看到图片预览,同时给出一个 URL。
这个链接就是你的图片外链,公开、直接能访问、还是 https。
复制出去,博客、笔记、公众号草稿里往里一贴就能用。
想批量传、自动传?直接调 API
手动传图、用 PicList 都顺手,但你要是图多、或者想自己写个上传页给访客用,就得碰 API 了。好消息是:R2 完全兼容 AWS S3 协议,凡是能连 S3 的工具,基本都能直接连 R2,只是把地址换一下。
先到 R2 后台「Manage R2 API tokens」点「Create API token」,权限选 Object Read & Write。生成出来一对密钥:Access Key ID 和 Secret Access Key。注意,secret 只显示这一次,关了页面就再也看不到了,先存好。
endpoint 地址长这样:
https://
<你的账户id>
.r2.cloudflarestorage.com
账户 ID 在 R2 概览页能直接复制,region 一律填 auto。下面三种玩法,挑顺手的:
1. AWS CLI —— 最省事
装好 aws cli,传图时多带一个 --endpoint-url 就行:
aws s3 cp ./cat.jpg s3://你的桶/images/ --endpoint-url https://
<账户id>
.r2.cloudflarestorage.com
写进脚本就能批量传、定时传。
2. rclone —— 当网盘用rclone config 新建远程,存储类型选 S3,provider 选 Cloudflare R2,把密钥和 endpoint 填进去。之后 rclone copy 本地目录 r2:你的桶/图片 一拖就同步,还能 rclone mount 把桶挂成本地盘。
3. 自己写网页上传 —— presigned URL
想做个网页/小程序让用户传图,别把密钥放前端。正确姿势:后端用密钥生成一个临时上传签名 URL(presigned URL),前端拿这个 URL 直接 PUT 图片,链接过期就失效,安全。上传前记得在桶的 CORS 里把你的域名加进允许列表,不然浏览器会拦。
还有一点:图片要能公开访问,桶得开「Public access」(或绑自定义域名),否则外链打不开。
星哥的云上小店
上面说的 R2 是海外的,适合海外业务和折腾党。
要是你主要做国内业务,想买云服务器、对象存储这类,走星哥的官方渠道,价格跟你自己去官网买一模一样,不收你一分钱额外费用,有时候还有新用户专属优惠。
• 阿里云:y.xgss.net/a
• 腾讯云:y.xgss.net/tx
链接不带 https,复制到浏览器地址栏打开就行。下单遇到问题,评论区喊我。
你现在的图床用的哪家?被限速还是被跑路过?评论区聊聊,我看看大家都踩过什么坑。
热门跟贴