前情摘要
[从存储到分发:使用Backblaze B2私有桶和Cloudflare Workers公开分发原声音轨](从存储到分发:使用Backblaze B2私有桶和Cloudflare Workers公开分发原声音轨)
上一次更新我将我的音乐存储到Backblaze B2私有桶里,使用Workers公开访问,但引申出了个问题,那就是音乐加载依赖于Workers,消耗Workers额度并且API地址容易被刷,安全性稳定性不佳。
且由于文件是需要从Backblaze那拉取,经过Cloudflare绕一圈,所以整体延迟偏高,速度也很慢,在应对多用户并发性能极烂,因此我开始寻找一个替代方案,一番搜索后,锁定了CloudflarePages
CloudflarePages的优势
存储空间
首先得明确一下Pages的限制,之前我一直以为单个Pages最多只能存放25MB文件,直到我看到了这个帖子:【再来薅一把 Cloudflare】教你怎么把Cloudflare pages变成不限速&不限文件大小的网盘用(非公开帖子)后才猛然发现,25MB是单个文件的大小限制,CloudflarePages只做以下限制
类型 | 限制 | 说明 |
---|---|---|
文件数量 | 20000个 | 两万个,小网站用起来绰绰有余了,中大型可能就不够用了 |
单文件大小 | 25MB | Cloudflare可能是有考虑到图片文件,因此设置25MB,对于我而言很宽松了 |
并发构建 | 1 | 一个账户一次只能构建一个Pages项目,没啥影响 |
这意味着什么?意味着只要我的良心不会痛,理论上我可以用Pages存放2万个25MB的文件,足足可以存放500000MB(488.28125GB)!当然我不会那么缺德去滥用,我只存点音乐。
其他优势
存储容量完美满足我的需求,不仅如此,Pages还有其他的优点:
- CDN,Pages原生支持Cloudflare的CDN,并且能通过_headers文件自定义缓存标头
- TTFB延迟,由于Pages不用绕来绕去的请求文件,文件是直接请求Cloudflare服务器的,所以TTFB延迟极低
- 并发性能优,纯静态文件托管,比Workers好很多
迁移
迁移站点很简单,Cloudflare提供了wrangler命令行,我只配置了下wrangler.toml和_headers然后就可以直接用
wrangler pages deploy
一键上传部署了。整个过程就上传时费了点时间,其他的一分钟搞定。
性能
这个是我使用Workers+B2部署的性能效果:

可以看到下载完这个文件足足花了18秒,而这是Pages的表现:

可以看到,速度极快,2秒搞定
这是它们的性能对比
指标 | Cloudflare Pages | Workers + B2 | 评价 |
---|---|---|---|
TTFB | 723.19 ms | 870.83 ms | TTFB更低,若使用默认分配的.pages.dev域名会更低 |
下载时间 | 563.56 ms | 19.52 s | Pages完胜,慢悠悠的Workers加载很慢 |
总共用时 | 1.29 s | 20.40 s | Pages完胜 |
上述测试数据为海外节点测速,若使用默认分配的.pages.dev域名TTFB会更低,因为分配的是更优质的IP,缺点是大陆可能被屏蔽。(若你的自定义域分配到的IP质量好的话就没有这回事,我是因为我的域名分配到了垃圾IP)