从本地到云端:我的博客图片对象存储迁移记录

从本地到云端:我的博客图片对象存储迁移记录

为什么要折腾?

随着博客里面的图片越来越多,图片都放public目录带来的负担越来越大。

一来仓库里图片文件太多太杂不方便管理,二来我也不想把图片都放仓库里,即使是私有仓库。

哈吉米直言还有这些问题:

  • Git 仓库变得异常臃肿
  • 拖慢构建和部署速度(CI/CD)
  • 不利于图片管理和优化

借着这次博客重构,就顺便也把图片全部迁移到对象存储吧。

我的想法是这样

设想

核心诉求是 “国内外分流”:国内要快,国外要省。

根域名elvish.me虽然托管在Cloudflare,只需要把子域名assets.elvish.meNS托管到 腾讯云DNS 就能利用腾讯云灵活的“境内/境外”分流解析

  • 境外走R2,虽然只有10GB,但是访问AB类操作都只按次数计费,额度也很高。

即使每张图片都按照现在最大的图片1300KB来计算,也能放下近3.5w张图片,应该管够。

  • 国内打算走缤纷云,免费给50GB,有余额就可以设置为公开桶。

实践

先在 Cloudflare 创建了一个R2 存储桶,然后连接到域assets.elvish.me

Cloudflare 创建了一个CNAME记录指向这个存储桶,我一看不给我看CNAME记录值.

于是再添加了一个自定义assets-r2.elvish.me,打算在腾讯DNS把境外通过CNAME指向这个域,希望能正确路由。

结果到 缤纷云 添加域名的时候不认国内CNAME解析。

取消设置腾讯NS,把解析还给Cloudflare才让 缤纷云 验证通过。

然后犯傻了,忘记把子域名NS设置回腾讯云了,折腾了半天没效果 (TTL害了我)


解决Cloudflare路由问题

总之,最终两边存储桶的域名都绑定好了,测速时发现了境外Cloudflare节点全线爆红522

用国外节点访问网址,果然是Cloudflare 522报错页面,看来边缘节点到R2的路由还是不对。

这时我想起之用来优选时折腾过的Cloud Connecter规则,这应该才正解。

  1. 导航到Domainselvish.meRulesCloud Connecter
  2. 选择对应的R2储存桶,选择一个已经与这个R2绑定的域,这里我把assets.elvish.me与R2解绑了,改为绑定到assets-r2.elvish.me
  3. 编辑规则:主机名 通配符 assets.elvish.me

主机名 通配符 assets.elvish.me

保存这个规则就可以了

最后在 腾讯云DNS把assets.elvish.me来自境外的请求解析到Cloudflare的边缘节点上就行了,这里我填的CNAME assets-r2.elvish.me

总结

现在再进行测速:

所有结果都是200了 国内全深绿,境外到Cloudflare也是非常快的深绿

R2按照次数计算我倒不是很担心,国内的存储对象我很怕把每月的出口流量用完,因此最后又给 缤纷云 套了一层 Edgeone 的CDN。

最终的结构如下:

现在,我的 Git 仓库回归了“纯净文本”状态,图片加载速度也起飞了。善~

Footnotes

  1. A7M4拍摄 → LR导出为JPG → 裁剪转化为WEBP
距离上次编辑:

部分信息可能已经过时。

新故事即将发生
终末地 点云复刻

评论

评论加载中...