有一年多没有更新博客了吧,最近想把博客给拾掇拾掇,打开博客就发现图片加载好慢。我一直使用的是免费资源,比较费精力,托管图片的地方也换了好几个,每种方法有所长,也有所短。
本文搭建图床的方法主要参考这篇文章,使用 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 | // 配置 B2, 需要控制面板创建的 API key |
在 B2 上的文件,路径前需要加上 remote:
,假设 B2 上有一个 bucket 的名称为 mistletoe
,上传本地文件 some.txt
至 B2 的命令就是 rclone copy some.txt remote:mistletoe/some.txt
。如果觉得一张张上传太麻烦,可使用 sync
命令将本地目录同步至云端。