图床迁移 Cloudflare R2
不得不说 CF 是互联网界的活菩萨,免费提供的对象存储量大管饱,对我这种没人看的小透明足够了:
- 存储:10GB/月免费,每增加 1GB/月收取 0.015 美元
- A 类操作:100 万次操作/月免费,每增加 100 万次操作收取 4.50 美元
- B 类操作:1000 万次操作/月免费,每增加 100 万次操作收取 0.36 美元
- 出口流量费全免
TIP
什么意思呢?只有访问次数计入账单(A 类上传,B 类访问),无论多大的文件,流量费全免!
2026 年了,我可能是最后一个知道 Cloudflare R2 的人了吧,PicList + (Cloudflare R2) S3API,可能是博客圈的一套标准答案了。
我之前一直用 GitHub / NPM 存图片,然后用一些公共的 CDN 做图床,其实也算方便,如果 CDN 有一天不能用了,或者我挂逼了,可以直接按规则把前缀改一下,图片就都回来了。
为什么还要大动干戈,转移到 Cloudflare 呢?
因为我最近有传视频的需求了,之前我的博客很少有图片,几乎没有视频,我还能考压缩把他们压缩到 1M,512KB 内,所以最终 GitHub 仓库不会很大,还能接受。
但这次我的视频是 3M,已经不能简单的压缩了,上传 GitHub 容易引起提及暴涨,并且对 GitHub 来说,图床其实已经是算违规操作了,按最近全球去微软,GitHub Copilot 被薅羊毛的趋势,财大气粗的微软可能也不一定靠谱。
没有办法,最终选择看看 CF 吧。
大体迁移流程类似: https://zhuanlan.zhihu.com/p/2003661503337886355
我就不赘述了,我就简单说迁移前后的一些心得:
二次压缩
因为最开始上传 GitHub 用的 PicGo,那时还没有大小管理的概念,所以上传的图片大多比较大,这次迁移,正好可以乘次机会再压缩一遍:
我的图片大多是 PNG,可以借助 https://pngquant.org 工具通过如下命令无损压缩
pngquant --force --ext .png *.png就算图片有其他格式,也可以通过 magick 转换为 PNG,执行上述操作
magick frieren.jpg frieren.png如果效果不理想,那么只能牺牲品质,进行有损压缩
pngquant --force --ext .png --quality=60-80 frieren.pngPicList 管理图片和上传图片配置
我不理解为什么这两个功能分开,因为部分功能有重复。
但是如果想要用两个功能(管理和上传),最简单的办法就是 TOKEN 配置的时候配置管理员读写 1:

如果仅仅是上传的话,配置第三个,对象读写的权限就完全可以胜任。
最终效果如下:

自定义域名
我一开始有设置这个 ,但发现好像没啥必要。
因为域名也有过期的一天,如果有一天我挂逼了,链接最多活 10 年,那么 10 年后呢?你的图片还不是一样全部挂掉了?
那么怎么办呢?
还是用 CF 给的域名吧,活得比我久,也挺好的。
https://img.bgzo.cc
https://pub-89c11651a8434f18a530bd6f93e399da.r2.devFootnotes
-
云端由于需要列出 bucket 列表,所以需要的权限比只上传图片更高,需要管理员读和写 via https://github.com/Kuingsmile/PicList/issues/473 ↩