博客除草计划(一):使用 Backblaze、Cloudflare 和 rclone 管理博客图片

有一年多没有更新博客了吧,最近想把博客给拾掇拾掇,打开博客就发现图片加载好慢。我一直使用的是免费资源,比较费精力,托管图片的地方也换了好几个,每种方法有所长,也有所短。

本文搭建图床的方法主要参考这篇文章,使用 Backblaze B2 存储图片,Cloudflare 配置子域名、设置缓存等,rclone 用做 B2 的客户端,管理本地的图片。

上图为设置前后的效果对比,使用这种方法后,博客图片加载快了不少。

Backblaze B2

B2 是 Backblaze 的云储存产品,有 10GB 的免费存储空间,用来存储图片足够了,B2 的具体配置过程,文末给出的参考文章介绍得很详细,可以具体参考。

配置妥当后,资源的 URL 形如 https:/fxxx.backblazeb2.com/file/<bucket-name>/path/to/resource 这种形式,如果不需要子域名、缓存等进一步需求,到这就可以了。

Cloudflare

使用 Cloudflare,它需要你把域名的 DNS 服务器换成它家的。配置子域名时,需要一定的时间生效,请耐心等待,完成后,资源的 URL 变成 https:/subdomain.domain.com/file/<bucket-name>/path/to/resource

按照参考文章的步骤,配置好 Cloudflare Workers 后,资源的 URL 变成了 https:/subdomain.domain.com/path/to/resource ,去掉了 /file/<bucket-name>,如此一来,显得更专业了许多。Workers 就是一段 JavaScript 代码,由特定的路由触发,可对站点的原始请求、响应进行修改,在这里通过 Worker 脚本完成了定制 URL 等需求。

在 Cloudflare 上还可以设置站点的缓存,设置缓存后,站点响应会更快。

rclone

考虑到平台支持性,我选择 rclone 这个工具用做 B2 的客户端,管理本地资源。rclone 是一个命令行工具,用来同步本地资源到各种云存储解决方案。rclone 支持各种平台,文档也很详尽。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 配置 B2, 需要控制面板创建的 API key
rclone config

// 列出所有云端目录
rclone lsd remote:

// 列出某个 bucket 中的所有文件
rclone ls remote:[bucketName]

// 复制文件
rclone copy [pathFrom] [pathTo]

// 利用命令替换, 可实现本地资源按年月分类上传云端
rclone copy [pathFrom] remote:[bucketName]/$(date +%Y)/$(date +%m)

// 删除文件
rclone delete [path]

// 同步本地至云端, -P 参数用于开启传输过程
rclone sync [source] [dest] -P

在 B2 上的文件,路径前需要加上 remote:,假设 B2 上有一个 bucket 的名称为 mistletoe,上传本地文件 some.txt 至 B2 的命令就是 rclone copy some.txt remote:mistletoe/some.txt。如果觉得一张张上传太麻烦,可使用 sync 命令将本地目录同步至云端。

参考资料