嘟嘟社区

针对前端公用库挂掉的一个可能的解决方案:Service Worker


最近Bootcdn挂了,很多网站收到影响,包括我自己的签名站 https://bks.thefuture.top

之前jsdeliver也出现过不稳定的问题,所以就想着遇到这种前端公用库出问题的情况下有没有什么比较好的解决方案。

看到坛子里有大佬说自己托管相关的js文件,也尝试过自建,但在文件版本管理上觉得比较麻烦,在加上作为mjj最重要的品质就是白女票

于是就上github搜索看看有没有现成的开源解决方案,没想到还真的有,直接上github链接:

https://github.com/EtherDream/freecdn

freecdn 是一个纯前端的 CDN 解决方案,用于降低网站流量成本,同时提高网站稳定性、安全性,并且无需修改现有的业务逻辑。

功能亮点

自动选择公共库
互联网上有很多免费的公共库 CDN,例如 cdnjs、jsdelivr、unpkg,但哪个最稳定,始终没有明确的答案。

现在你无需纠结这个问题,随意选择即可。freecdn 可根据用户的网络状况,实时切换到合适的 CDN

全站 Hash 校验
现代浏览器可通过 SRI 校验资源完整性,降低第三方站点的风险。但 SRI 也存在一些不足,例如支持的类型太少、需要修改 HTML、缺少备用机制。

freecdn 能校验任意类型的资源,例如图片是否被篡改,从而提升内容安全;无需修改 HTML,并且所有 Hash 统一维护,方便使用和更新;即使校验失败,自动切换到备用资源,避免损坏业务。

充分利用图床
网站图片很耗流量,不少人将图片上传到图床、相册等第三方站点,充当免费 CDN。但这也存在诸多难以预测的情况,例如图片被删、限制外链、添加水印、有损压缩、限速等等。

现在你无需担心这些问题。你只需将图片备份到多个图床,freecdn 会依次尝试,直到获得预期内容。此外,不仅是图片,任意类型的文件都可通过图床加速!

网站离线运行
任何网站都无法避免网络故障,例如机房故障、DNS 故障、运营商丢包、DDOS 攻击,导致网站无法稳定访问。

freecdn 支持网站离线运行。用户只有首次访问依赖你的服务器,之后即使服务器关机,前端程序也能从备用站点加载最新的页面和资源,成为一个不依赖中心的网站。查看更多

WebP 无缝兼容
相比 JPG/PNG/GIF 等格式,WebP 有着更高的压缩率,但并非所有浏览器都支持,因此需处理兼容性。传统的无缝兼容需要后端支持,服务器根据 Accept 请求头决定是否返回 WebP 格式,从而实现同个 URL 返回不同格式的效果。

freecdn 可在前端实现这个功能,无需后端支持。

资源快速更新

HTTP 的缓存时间,一直是个头疼的问题。时间太短,性能不够好;时间太长,更新不及时。因此很多网站都有自己的资源更新方案。

freecdn 使用独特的更新机制,只需更新一个清单文件,就能更新所有资源。

以上便是这个开源项目的介绍,感觉功能非常强大!