在 2023 年评测前端静态资源公共 CDN - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
kkocdko

在 2023 年评测前端静态资源公共 CDN

  •  
  •   kkocdko
    kkocdko Jun 12, 2023 3599 views
    This topic created in 1052 days ago, the information mentioned may be changed or developed.

    本文原始链接(本人博客): https://kkocdko.site/post/202306120230

    当下前端工程化后,大家都把东西塞进 Bundle 了,曾经很重要的“前端静态资源公共 CDN”也似乎即将成为时代的眼泪。然而对于一些写 Demo 之类的需求,它们是有点用的,再加上目前互联网上对静态资源公共 CDN 的评测文章大多过时,于是我测试并总结了一下。本次测试使用 curl 和 hyperfine 并切换多个代理节点(是的我知道这不精确)。

    TLDR: 境外 jsDelivr / UNPKG 任选,境内推荐 npmmirror ,境内外都有需求建议 npmmirror 但不完美。如使用特别流行的库,也可使用 cdnjs 或其他国内 CDN 。

    前端公共 CDN 目前大致分两类,一类是 cdnjs 这种需提交审核的,另一类是 jsDelivr 这种镜像 NPM 的。前一类的代表自然是 Cloudflare cdnjs ,或者 Google 的 CDN 。国内此类 CDN 通常以 cdnjs 为上游进行同步。BootCDN 曾经很流行,但曾有多次事故,恐怕用起来还需谨慎。

    后一类是本文重点,许多时候我们写的 Demo 所需的库并未被 cdnjs 收录,提交审核又太费时费力,所以我偏好使用直接镜像 NPM 的公共 CDN

    分别是 npmmirror (淘宝 NPM 镜像),饿了么 UNPKG CDN ,UNPKG ,jsDelivr 。我们的测试命令:

    testonce(){ ./hyperfine -w 2 -r 10 -p "sleep 1" -u millisecond "curl $1 >/dev/null" ;} testonce https://registry.npmmirror.com/@fontsource/noto-serif-sc/5.0.3/files/files/noto-serif-sc-chinese-simplified-400-normal.woff2 testonce https://npm.elemecdn.com/@fontsource/[email protected]/files/noto-serif-sc-chinese-simplified-400-normal.woff2 testonce https://unpkg.com/@fontsource/[email protected]/files/noto-serif-sc-chinese-simplified-400-normal.woff2 testonce https://cdn.jsdelivr.net/npm/@fontsource/[email protected]/files/noto-serif-sc-chinese-simplified-400-normal.woff2 

    测试结果篇幅太长,感兴趣可以到原文地址看。顺便我在移动 4G 测试 jsDelivr 始终 Reset ,像是个墙中墙。

    总结:jsDelivr 曾经是完美的选择,但自从证书吊销事件后在大陆地区的访问就不是很正常; UNPKG 表现一般,至少都能用; npmmirror 在境外也有节点,虽然不如 jsDelivr 那么多,但是均衡的选择;饿了么 CDN 仅适合无境外访问需求的场景。

    6 replies    2023-06-12 13:15:29 +08:00
    kkocdko
        1
    kkocdko  
    OP
       Jun 12, 2023
    不知道 V2EX 的 Markdown 是否支持直接使用 <details> 标签,要是支持的话以后直接把数据折叠起来。
    JensenQian
        2
    JensenQian  
       Jun 12, 2023 via Android   1
    怀念以前 jsdelivr 有国内节点时候
    atan
        3
    atan  
       Jun 12, 2023   1
    国内应该用 fastly.jsdelivr.net 测试结果会好很多吧,另外你这个只是速度测试,jsdelivr 还有 minify 和 combine 等加成,目前其他没看到有哪家有这些功能
    LandCruiser
        4
    LandCruiser  
       Jun 12, 2023   1
    现在不赚钱,只有还在用软件,app 盈利的大厂会在意性能,加载时间这些东西。
    subframe75361
        5
    subframe75361  
       Jun 12, 2023   1
    试试 esm.sh
    kkocdko
        6
    kkocdko  
    OP
       Jun 12, 2023
    @subframe75361 esm.sh 也不错,不过我并没有特别迫切的使用 es module 的需求。jsDelivr 也提供了 esm.run
    About     Help     Advertise     Blog     API     FAQ     Solana     5238 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 49ms UTC 09:17 PVG 17:17 LAX 02:17 JFK 05:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86