为避免 CDN 故障,让网页自动选择 jsdelivr、unpkg 等站点

2021-12-23 13:52:22 +08:00
 iqoo

前几天 jsdelivr 出故障,很多网站都受影响。其实早已料到,毕竟 jsdelivr 可加速任意内容,显然不符合国情,被和谐估计是早晚的事。只是目前有太多网站在使用,直接下线影响太大,所以先出个故障,也许算是提醒这些网站可以开始考虑更换吧。以后“故障率”可能还会越来越高。

另一个选择是 unpkg.com 。虽然它同样也有类似问题,但多一个节点还是可以提高不少稳定性。毕竟两个同时故障的概率就低很多。

当然,如果只是用流行的公共库,不如 cdnjs 、bootcss 等等。毕竟 jsdelivr / unpkg 可加速自定义资源,显然更珍贵一些,加速公共库显得有点大材小用了。

但同时使用多个 CDN 实现很麻烦。例如需要通过 JS 监控脚本、图片、CSS 等加载失败或超时,然后加载后备资源替换之前的元素。而且还会出现一些副作用。因此很少有人这么做。

为方便使用,之前尝试做了一个方案,通过 Service Worker 将清单文件中指定的资源映射到多个 CDN URL ,一个加载异常自动尝试另一个。由于是在 Service Worker 实现,上层页面是无感知的。

演示:github.com/EtherDream/freecdn

当然由于时间有限,很多功能仍在开发中,不过基本功能已实现,有兴趣的可以试试~

4328 次点击
所在节点    分享创造
14 条回复
balabalaguguji
2021-12-23 14:01:24 +08:00
不错的东西
wszgrcy
2021-12-23 14:32:50 +08:00
支持楼主,最好出一个免费白嫖各种图床,图床失效自动换其他图床的
还有分布式的白嫖网盘,网盘失效同样可以换其他的
是不是要求有点多了[滑稽]
az22c
2021-12-23 14:39:51 +08:00
早就应该有这种东西了 牛逼
mywaiting
2021-12-23 14:51:43 +08:00
仔细看看博主 ID ,爱了爱了~

博主对前端黑魔法的研究,也真是煞费苦心了,这把 Service Worker 都要玩出花来了~
jh163888
2021-12-23 15:46:16 +08:00
这个真的好,非常感谢楼主分享!辛苦了! JS 环境真是日渐困难了
dyxang
2021-12-24 09:01:47 +08:00
等等,我是看 jsdelivr 有中国执照有网宿的内地节点才用的。莫非以后用不了了?
aulay
2021-12-24 09:25:20 +08:00
@dyxang 好像备案已经没了
ClarkAbe
2021-12-24 10:51:18 +08:00
你前几年的那个纯 CDN 那个更猛........一行 js == 一个网页
ClarkAbe
2021-12-24 10:53:02 +08:00
才发现大佬的博客也复更了......
ClassicOldSong
2021-12-25 01:44:35 +08:00
敢情挺好,我也正好在搞一个基于 ServiceWorker 的 Bundleless 项目,暂时还没开源,有兴趣的可以来戳我体验

如果这两个能够结合起来的话应该能是一个很不错的搭配

目前有个不太像样的还没做完的官网: https://unpak.dev
W4J1e
2021-12-25 22:26:25 +08:00
但愿那些用 jsd 作图床的换个方案吧,也别再折磨 npm unpkg 啥的了
dyxang
2021-12-26 16:07:50 +08:00
@aulay 看着我是真的难受,我是属于正经使用 jsdelivr 作为 cdn 的,结果有人瞎搞这下中国执照没了……
since2021
2021-12-28 21:46:57 +08:00
jackrebel
2021-12-31 11:17:21 +08:00
很赞

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/823977

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX