优化了下我的音乐空间网站性能


前情摘要

[从存储到分发:使用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还有其他的优点:

  1. CDN,Pages原生支持Cloudflare的CDN,并且能通过_headers文件自定义缓存标头
  2. TTFB延迟,由于Pages不用绕来绕去的请求文件,文件是直接请求Cloudflare服务器的,所以TTFB延迟极低
  3. 并发性能优,纯静态文件托管,比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)



  目录