V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
iqoo
V2EX  ›  分享创造

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

  •  
  •   iqoo · 287 天前 · 3227 次点击
    这是一个创建于 287 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    演示:github.com/EtherDream/freecdn

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

    14 条回复    2021-12-31 11:17:21 +08:00
    balabalaguguji
        1
    balabalaguguji  
       287 天前
    不错的东西
    wszgrcy
        2
    wszgrcy  
       287 天前
    支持楼主,最好出一个免费白嫖各种图床,图床失效自动换其他图床的
    还有分布式的白嫖网盘,网盘失效同样可以换其他的
    是不是要求有点多了[滑稽]
    az22c
        3
    az22c  
       287 天前
    早就应该有这种东西了 牛逼
    mywaiting
        4
    mywaiting  
       287 天前
    仔细看看博主 ID ,爱了爱了~

    博主对前端黑魔法的研究,也真是煞费苦心了,这把 Service Worker 都要玩出花来了~
    jh163888
        5
    jh163888  
       287 天前 via Android
    这个真的好,非常感谢楼主分享!辛苦了! JS 环境真是日渐困难了
    dyxang
        6
    dyxang  
       286 天前
    等等,我是看 jsdelivr 有中国执照有网宿的内地节点才用的。莫非以后用不了了?
    aulay
        7
    aulay  
       286 天前
    @dyxang 好像备案已经没了
    ClarkAbe
        8
    ClarkAbe  
       286 天前
    你前几年的那个纯 CDN 那个更猛........一行 js == 一个网页
    ClarkAbe
        9
    ClarkAbe  
       286 天前
    才发现大佬的博客也复更了......
    ClassicOldSong
        10
    ClassicOldSong  
       286 天前
    敢情挺好,我也正好在搞一个基于 ServiceWorker 的 Bundleless 项目,暂时还没开源,有兴趣的可以来戳我体验

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

    目前有个不太像样的还没做完的官网: https://unpak.dev
    W4J1e
        11
    W4J1e  
       285 天前
    但愿那些用 jsd 作图床的换个方案吧,也别再折磨 npm unpkg 啥的了
    dyxang
        12
    dyxang  
       284 天前
    @aulay 看着我是真的难受,我是属于正经使用 jsdelivr 作为 cdn 的,结果有人瞎搞这下中国执照没了……
    since2021
        13
    since2021  
       282 天前
    jackrebel
        14
    jackrebel  
       279 天前
    很赞
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1108 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 23:50 · PVG 07:50 · LAX 16:50 · JFK 19:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.