免费的对象存储资源日渐枯竭,Backblaze 是为数不多仍提供免费 OSS 的良心厂商。另外一个则是大名鼎鼎的 Cloudflare R2。虽然免费,但 Backblaze 也修改了政策:如果不验证信用卡的话是不能打开 Public 选项的,或者支付一美金。估计是薅羊毛的朋友太多了,官方不得不做某种限制。
注册 Backblaze
在 Backblaze 新建一个 Public 桶,注意默认的 private 桶是不行的(除非你把它当作只是个人的网盘)。而且 AppKey 和密钥要在 Application Keys 里面重新申请,而不能直接用 Master Application Key。
与 Cloudflare CDN 打通
Backblaze 为免费用户提供 1G 的流量——这对稍微有点规模的应用是远远不够的。但幸运的是,Backblaze 和 Cloudflare 是 Bandwidth Alliance 的成员,他们之间没有数据传输费用。而cloudflare的免费计划没有这意味着您可以节省大量的流量成本,而且不用担心超出免费额度。得益于这种合作伙伴关系,我们可以将内容存储在 Backblaze 的 B2 存储服务上,并根据需要自动将其馈送到 Cloudflare 的 CDN。
- 首先需要在 Cloudflare 添加一个您自己的域名,并根据提示完成接入。
- 比如您在 Cloudflare接入的域名为
file.xxx.com
,需要在 Cloudflare 将域名使用 CNAME 记录解析到 B2 的域名:f002.backblazeb2.com
。这个f002.backblazeb2.com
从你 Backblaze 桶地址中获取。
1.进入 SSL/TLS,确保 Cloudflare 以 FULL 模式对源使用 SSL(Backblaze B2 仅支持 HTTPS 连接,如不设置则出现 522 错误);
设置缓存
虽然启用了 Cloudflare CDN,但发现缓存永远不能命中(MISS),我们需要对添加一个缓存指令(默认是不缓存),打开存储桶设置,桶信息设置为{"cache-control":"max-age=720000"}
,其中 720000 单位为秒(s),意思就是说 720000 秒内 CF 不会去从源站重新获取资源。
在网页中插入一张图片,通过浏览器 F12 调试工具已经可以看到请求命中了CF缓存,如下截图。
其他优化
另外你还可以“重写 URL”和“去除不必要的响应 Header”,参见教程 1、2。
官方教程:https://www.backblaze.com/blog/free-image-hosting-with-cloudflare-transform-rules-and-backblaze-b2/