
一、前言
对于个人开发者而言,我们似乎永远也绕不开 Cloudflare 。
他已经不再是一个简单的CDN 服务商,Cloudflare 为个人开发者提供了一个强大的工具集,静态站点托管、CDN 加速服务、域名和 DNS 管理、基础安全防护、流量分析、对象存储等等。最重要的是很多功能在免费计划中就能使用。
正如官网介绍所说的那样,Cloudflare 是为"无处不在的世界"打造的云,是一站式网络、安全和开发人员服务的平台。
二、为什么要使用图床?
一个稳定的图床对于我们个人开发,或者经常写博客的人来说是极其重要的,你是否也碰到过以下类似情况:
2.1. 在电脑上写了很多博客,但是图片资源散落在电脑上各个角落,迁移时苦不堪言
所以你学会了归纳整理,完成了进化,将所有相关资源放在同级目录下,主要在电脑上迁移,或者部署静态站点的时候也可以很方便的读取到。

2.2. 突然有一天你决定将自己的成果展示出来,在各个平台上发布,重新上传图片上传到崩溃
这个时候平台是没办法检测导入你本地的图片的,那么你如果想要在各个平台上发布,需要自己手动将每个图片都重新上传一下。这种情况下如果每个平台都手动传一次,人都要崩溃了。

这个时候如果有一个稳定的图床,在我们写博客的时候,粘贴图片后,自动将图片上传到图床服务器上,那么无论我们怎么折腾,只要服务器不蹦,就可以为所欲为了。
三、基于 R2 对象存储搭建高速免费图床
3.1. 费用介绍
图床的选则有很多,对于个人来讲,在稳定和成本中间取一个平衡,我还是比较推荐实用 R2 对象存储来构建。当然国内阿里云和腾讯云都提供了对象存储服务,并且也给出了一些免费额度,轻量使用下几乎等于免费。但是对于外网流量他是单独计费的,所以如果使用一定要做好流量监控,避免盗刷风险。当然这些都是题外话,这里重点介绍一下 R2 对象存储的计费方式。更细节的定价看这里:developers.cloudflare.com/r2/pricing/

可以看出给出的免费额度完全够我们日常使用了。
如果单纯存博客图片资源,绰绰有余了。
A 类操作 ,你可以简单理解为,一些变更操作 ListBuckets, PutBucket, ListObjects, PutObject, CopyObject, CompleteMultipartUpload, CreateMultipartUpload, LifecycleStorageTierTransition, ListMultipartUploads, UploadPart, UploadPartCopy, ListParts, PutBucketEncryption, PutBucketCors and PutBucketLifecycleConfiguration。
B 类操作 则是查看 HeadBucket, HeadObject, GetObject, UsageSummary, GetBucketEncryption, GetBucketLocation, GetBucketCors and GetBucketLifecycleConfiguration.。
删除操作完全免费 DeleteObject, DeleteBucket and AbortMultipartUpload.
最重要的一点,出口流量免费,这无疑是最吸引我的点。
这里有一点要提醒一下,除了上述说明外,对于
Infrequent Access storage非频繁访问存储,访问是收费的,会有一个检索费用,所以如果没有特殊要求,使用默认的Standard storage标准存储就行。
3.2. 注册账号,开通R2对象存储服务
- 首先访问官网 www.cloudflare-cn.com/,注册账号,登录。
- 开通 R2 存储服务,添加付款方式,填写好帐单邮寄地址,完成后点击"将 R2 订阅添加到我的账户"即可

我这里使用的是 PayPal 账户,亲测普通的银联储蓄卡即可,绑个不常用的卡就行,里面转个几块钱就可以了。只有当你使用量超过每月限额时,超额部分才会收费。

3.3. 创建存储桶
订阅成功之后进入管理面板

点击创建存储桶
因为我们主要还是国内访问,所以建议选亚太地区,存储类型标准就好。点击创建存储桶,完成创建


3.4. 启用公共开发 URL
让外网可以访问到图片


开启后,我们可以通过
r2.dev子域名访问到,但是这里提示了,不建议生产使用,有限制。建议使用自定义域名。

这个时候我们去存储桶随便上传一张图片试一下
点击图片,可以看到已经可通过子域名访问了。

3.5. 使用自定义域访问
注意:要将你买的域名托管到
Cloudflare后,才能进行以下操作,如何托管,可以看一下这篇文章:juejin.cn/post/757591...
点击【设置】--> 【自定义域】--> 【添加】

这个时候我们可以基于托管的域名,添加一个图片资源的二级域名,比如 img.csyblog.cn

这个时候 Cloudflare 会自动帮我们在已托管的域名上添加 DNS 记录,点击 【连接域】


等待初始化完成。
在我们托管域名的 DNS 记录中也可以看到这条记录

再次打开刚刚上传的图片,这时候已经可以看到自定义域的访问地址了
可以看到刚刚自动添加的
DNS自动开了代理,所以图片的访问也是加了CDN的

四、PicGo 设置
如果你想要通过代码上传,可以自行查阅
api文档,这和其他平台几乎一样,这里我就不赘述了。文档地址 developers.cloudflare.com/r2/api/s3/a...
简单介绍一下 PicGo ,你可以简单理解为这是一款图片上传工具,只不过可以通过配置指定到云存储对象中,并且在上传过程中可以通过一些插件做二次处理,比如图片压缩,加水印等等。官网地址:picgo.github.io/PicGo-Doc/
安装完成后,打开软件,点击【PicGo】设置,这里可以看到默认是没有我们需要的 Cloudflare R2 对象存储的。

点击插件设置
直接搜索
r2,我这里不知道是网络问题还是软件bug,搜索不出结果,你可以点这个进入插件列表,下载到本地后导入。插件列表地址:github.com/PicGo/Aweso...


后经过验证,确实是软件
bug,下载最新beta版本,可以搜到。

R2 其实是实现了 S3 API,所以理论上你下载 s3 的插件也是可以的。

注意: 又到了选则的时候了,在前面的文章中我就有提到过,如何选择一些开源的项目。
这里也是一样。
点击插件名称进入
github地址,举例说明,这个排名最靠前的。5个star,1年不维护,文档几乎等于没有,直接pass我就不一个个代大家去看了,我建议还是进官方插件列表里去找一找
插件代码开源地址:github.com/JYbill/picg...
这个虽然
star不多,但是4个月前有维护,并且文档写的很详细,算是比较好的了。也是奇怪,在
GUI界面竟然还搜不到。排名非常靠后。搜全称才行
picgo-plugin-cloudflare-r2-xqv
点击安装

安装完成后,左侧图床设置会出现 r2 的配置菜单,点击编辑,完成配置即可。

github.com/JYbill/picg... 这个插件的文档写的也很详细,可以参考这里。大家如果觉得好,一定要点个 star 啊!!!
回到 Cloudflare 的管理后台,点击 【Manage】


点击【创建 Account API 令牌】

这必须要包含读写,因为我们要上传
创建完成后会生成我们需要的所有密钥值。

一一对应,填入PicGo的配置中即可
这里要注意,要先复制出访问密钥ID 和 机密的访问密钥,这个页面关闭后,就看不到了,得重新生成。

保存完成后,我们将 r2 设置为默认图床。

我们在【上传区】随便上传一张测试一下。



可以看到上传成功。
至此,配置已经完成了。
五、PicGo 与 Typora 整合
现在我们已经可以通过 PicGo 将本地图片上传到 R2 中,但是在写博客的时候依然不是很方便。
我想要达到的最终效果是,我复制粘贴到文章上的时候,自动进行压缩,上传,将博客的图片地址改成 R2 的访问地址。
5.1. Typora 整合 PicGo 插件

【文件】 --> 【偏好设置】--> 【图像】--> 【上传图片】--> 【选择 PicGo 的 exe 程序】

点击 【验证图片上传选项】,有上传成功提示则表示配置完成
可自己测试一下
注意:如果上传失败,请检查一下是否本地防火墙导致,可关闭防火墙重试。
六、使用经验分享
6.1. 上传时自动压缩
① 下载插件 tinypng

② 申请 API KEY 申请地址:tinify.com/developers
这个压缩原理就是调用
tinify的api进行压缩,现在免费的是每个月500次。
③ 将申请的 api key 配置一下

④ 启用压缩插件

6.2. 上传时重命名

6.3. 上传时路径设置
这里我其实我想要的效果是,根据本地的路径上一级给我分类上传,但是没有好用的插件,有空考虑自己写一个吧。
我想要的效果比如本地路径: D:\AA\V2H\images\image-20251124143306317.png,可以给我自己截取,上传到存储桶 \V2H\images\image-20251124143306317.png 下,但是目前用的这个插件不支持,只能自己指定子目录,所以暂时只能这样,自己每个项目创建一个配置,然后在写博客的时候自己手动切一下当前默认的图床设置了。

6.4. Typora 设置
如果你不在乎图片的层级分类,可以设置为粘贴直接上传,但是我建议你和我一样,本地存储一份,上传至
github归档 (原件),r2存储一份用于访问(压缩过的)。

当我们确定要上传某个图片时手动上传,这样可以尽可能的节约资源。

6.5. 订阅 R2 账单

七、总结
在重新整理的过程中进行了一些新的尝试,虽然耗费了些许时间,但最终有所收获。如果本文对您有所启发,希望能给个👍支持一下。
千里之行,始于足下。你的"个人公司"从这第一个2小时开始。欢迎在评论区分享你的进展或遇到的卡点,我会逐一查看,尽可能的帮助解决。我们下一篇文章见!


