V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cydian
V2EX  ›  程序员

用程序猿视野看公共 CDN(安全性、易用性、国内最需要的 SRI 等等),还看见了各大厂商对公共资源服务的态度。(表格一目了然的比较方式,多地均值测试数据)

  •  5
     
  •   cydian ·
    404 · 2018-07-31 19:04:12 +08:00 · 9439 次点击
    这是一个创建于 2093 天前的主题,其中的信息可能已经有所发展或是发生改变。

    多方面分析国内外公开的 CDN

    ==原创:Cydia·Rice (可能存在表达错误或者测试失误,请耐心提问或者指出错误),转载需注明==

    ==部分功能未参与此次分析,你可以在下面的评论提出来。部分分析不到位,请耐心指出,切勿大肆吐槽。==

    多方便分析了这些 CDN,各有利弊。公开的静态资源库是本次分析的重点,两大厂的自建 CDN 也加入本次分析。从中,我们或许可以了解哪些 CDN 比较可靠,哪些 CDN 服务的内容或区域更加适合我们。

    参与分析的 CDN

    由于第二个 CDN 官网未有名称,根据域名,暂且和同域名的图床同名。BootCDN 官网不稳定(因为引用了自家的 CDN 啊,所以----)。JSDelivr 因部分地区 algolia 搜索框加载慢,官网体验不佳。

    参与分析的 CDN

    CDN 服务

    绿色的 CDN 服务较多。其中,公开 CDN-SM.MS 和 75CDN,较其他 CDN,提供更多服务。自建 CDN 的服务内容主要看源站了,这里不做比较。

    CDN 服务比较

    CDN 资源来源

    绿色表明资源多,有些相当少,百度中规中矩。(对于国内的公共 CDN 来源并不唯一,这里注明主要来源。大多数都提供了“申请添加资源”功能,但只有 75CDN 能够及时响应并添加或手动更新,其他的一般申请都不了了之。)

    来源分析

    公开 CDN 域名、链接、证书安全性

    百度、BootCDN、CDNJS、Microsoft 的 CDN 域名或与主服务的证书一致,或为可自动续期的证书。理论上,上述 CDN 的 HTTPS 证书可得到保障。(我没有歧视证书的不同=.= )。也可以从中看出,多数公开 CDN 均使用了泛域名证书。

    CDN 域名以及证书

    SM.MS,CDNJS,JSDelivr 采用了更安全的策略( Use HTTPS-HTTPS only 指 HTTP 不会跳转到 HTTPS,但 HTTPS 访问后不可降级,将会带上 strict-transport-security 头; SM.MS 的安全策略颇为奇怪,部分 CDN 服务域名使用 Use HTTPS-HTTPS only,部分 CDN 服务域名 HTTPS 和 HTTP 可任意跳转; JSDelivr 将在 April 31st 启用 HTST,不再提供 HTTP,HTTP 强制跳转 HTTPS ;腾讯海外 CDN 至今仍未提供强制 HTTPS 服务)。

    我们还可以看出,直接提供 SRI 服务的有 75CDN (官网需按照指示开启 SRI,复制 link 或 script 标签时自动添加)。SRI 是浏览器的一种安全策略,防止第三方(中间人?拉光纤的?)篡改 CDN 文件内容。Github 于 September 19, 2015 已完成 Github 网页的 SRI 改造,加强 Github 的安全性。SRI 并非只有官方可以提供,我们可以手动根据 CDN 静态链接来获取 SRI (麻烦一点=.= )。

    不要认为 SRI 多此一举,你可是在国内环境。JSDelivr 约半年前,国内 CDN 被其服务商投毒,后紧急撤回。BootCDN 已多次反馈各地 CDN 被劫持,并要求升级为 HTTPS。
    

    链接安全性

    国内外 IP 数和 PING 的均值

    不要还没看完就认为我歧视那些 IP 少的 CDN,CDN 的质量和 IP 数无直接关联。图中的 IP 数,绿色为解析 IP 和其解析地所匹配,红色则为不匹配(国内解析到国外,反之亦然)。后面为对应的均值 PING。SM.MS\75CDN\JSDelivr\又拍 CDN 表现突出,国内外均能正常解析至就近 IP,所以其 PING 值也较低。

    IP 数和 PING 值(均值)

    实际文件测试&CDN 路径比较&问题

    说明:非单机测试,均为多地服务器测试,均为均值。测试时前 5 次测试值放弃,保证 CDN 已取回文件,减少源站的干扰。“-”值为无该文件。除 CDNJS 取回的文件大小为 450KB 外,其他测试的 CDN 取回的文件为 element4.5 版本的 index.js ( 525.854KB )。新浪 CDN 未能测试到 element 的 index.js 文件,但在查询库时,部分 CDN 文件存在编码错误(已排除本地问题和引用问题)。

    同步 CDNJS 库的 CDN 路径相同,开发时便于某些特殊操作。

    可以看出,0.5MB 的 JS,CDNJS 最慢,其他表现差异不明显。JSDelivr 因压缩方式不同,实际传回文件更小。

    实测数据

    总结

    ==CDN 无好坏之分,分析只是为了寻找更合适的 CDN 服务。每一个 CDN 的提供商都不容易。我们也可以从中看到某些大厂,对于公共 CDN 的服务态度。==

    强调

    ==原创:Cydia·Rice (可能存在表达错误或者测试失误,请耐心提问或者指出错误),转载需注明==

    ==部分功能未参与此次分析,你可以在下面的评论提出来。部分分析不到位,请耐心指出,切勿大肆吐槽。==

    第 1 条附言  ·  2018-11-18 11:43:20 +08:00
    37 条回复    2018-09-14 19:40:53 +08:00
    cydian
        1
    cydian  
    OP
       2018-07-31 19:33:25 +08:00
    @tencentcloud 请问一下 海外 CDN 是否会支持强制 HTTPS (国内早就支持了吧)?提交过需求已经很久了,没有回应。
    还有,国外 CDN 的控制台会更换成国内 CDN 的控制台一样吗?设计的有点丑啊。
    isCyan
        2
    isCyan  
       2018-07-31 20:16:22 +08:00
    Auto SRI 这个功能,CDNJS 和 JSDelivr 都有提供,为什么是 Unsupported ?
    https://www.jsdelivr.com/package/npm/bootstrap
    随便一个文件,可以直接 Copy SRI
    https://cdnjs.com/libraries/twitter-bootstrap
    随便一个文件,可以直接 Copy SRI
    cydian
        3
    cydian  
    OP
       2018-07-31 20:27:20 +08:00
    @isCyan 您好,可能在分析时,遗漏了。稍后会进行修正。
    修正:核实 Cdnjs 已提供 Auto SRI (在复制按钮的下拉选项中);JSDelivr 的详情页打开稍慢,稍后确认。


    V2EX 们对于有帮助的内容,或多喜欢默默收藏。
    大家留下一点足迹吧。
    期待你们的留言。
    isCyan
        4
    isCyan  
       2018-07-31 20:31:24 +08:00
    @cydian 都程序猿了,开个飞机吧,哪有那么慢
    cydian
        5
    cydian  
    OP
       2018-07-31 20:32:03 +08:00
    @isCyan 核实该问题。
    修正:JSDelivr 已提供 Auto SRI (选中文件,进入复制界面后,选择 Tab 中的 SRI )
    cydian
        6
    cydian  
    OP
       2018-07-31 20:33:00 +08:00
    @isCyan 飞机不稳,安全第一。
    lnkn
        7
    lnkn  
       2018-07-31 22:42:41 +08:00
    感谢,刚好现在要考虑 CDN,可以参考了
    fengleidongxi
        8
    fengleidongxi  
       2018-07-31 22:48:30 +08:00
    @cydian 哪个是免费的?
    cydian
        9
    cydian  
    OP
       2018-07-31 22:53:55 +08:00 via Android
    @lnkn 嗯。
    cydian
        10
    cydian  
    OP
       2018-07-31 22:54:57 +08:00 via Android
    @fengleidongxi 除后面四个自建,其他均为公开 CDN,所有详情均可在其官网获取,公开 CDN 不收费。
    fengleidongxi
        11
    fengleidongxi  
       2018-07-31 23:14:25 +08:00
    @cydian 不收费那怎么营利啊?
    wlchn
        12
    wlchn  
       2018-07-31 23:31:12 +08:00 via iPhone
    根据实际体验国内美国综合来看,jsdelivr 是相对最出色的。
    qiukong
        13
    qiukong  
       2018-07-31 23:41:23 +08:00
    国内我只服 loli 家
    bequt
        14
    bequt  
       2018-07-31 23:44:20 +08:00
    75 才一年多,不知道后面会不会关。毕竟 360 有前科
    cydian
        15
    cydian  
    OP
       2018-08-01 00:07:15 +08:00 via Android
    @wlchn 感谢反馈,请问您是在美国本土吗?
    cydian
        16
    cydian  
    OP
       2018-08-01 00:08:03 +08:00 via Android
    @fengleidongxi 所以本文标题中提及了 “还看见了各大厂商对公开服务的态度”
    cydian
        17
    cydian  
    OP
       2018-08-01 00:08:26 +08:00 via Android
    cydian
        18
    cydian  
    OP
       2018-08-01 00:10:01 +08:00 via Android
    @qiukong loli 属个人服务,是一位 V2EX 伙伴的。loli 已经服务多时,值得信赖。应该给这些无私奉献的人点赞。
    cydian
        19
    cydian  
    OP
       2018-08-01 00:13:04 +08:00 via Android
    @bequt 和该 75CDN 管理者沟通过。他们相对其他 CDN 的管理者更加友好。经过有效沟通后可以让他们快速添加某些库或者提交更新。对于 CDNJS 库里面,没有收录或者更新不及时的库,75CDN 值得选择。目前也是国内少见直接提供 SRI 服务的。
    oonnnoo
        20
    oonnnoo  
       2018-08-01 00:37:49 +08:00
    不赚钱的业务,360 都是说关就关的

    论添加更新资源方便性还是 JSDelivr,想更新,自己提交到 GitHub 上就更新了
    bequt
        21
    bequt  
       2018-08-01 00:53:01 +08:00
    楼主用什么 ping 这些 cdn 的?
    bequt
        22
    bequt  
       2018-08-01 00:54:44 +08:00
    138 个探测点(完成 138 个)最快新加坡 <1ms 最慢浙江温州[电信] 248ms 平均 22.8ms cdnjs.loli.net
    128 个探测点(完成 128 个)最快美国 <1ms 最慢贵州兴义[电信] 282ms 平均 16.1ms cdn.jsdelivr.net
    128 个探测点(完成 128 个)最快重庆[联通] <1ms 最慢美国纽约 429ms 平均 49.3ms cdn.bootcss.com
    137 个探测点(完成 137 个)最快美国洛杉矶 <1ms 最慢江苏镇江[电信] 270ms 平均 33.3ms lib.baomitu.com

    说实话,楼上说的 JSDelivr 真不错
    Loyalsoldier
        23
    Loyalsoldier  
       2018-08-01 01:04:38 +08:00
    JSDelivr 是最好的
    Marfal
        24
    Marfal  
       2018-08-01 01:28:49 +08:00
    JSDeliver 好像国内是和网宿合作的,国外更是相当好,推荐!
    diggerdu
        25
    diggerdu  
       2018-08-01 04:24:28 +08:00 via iPhone
    请问有哪些支持 websocket 呢
    cydian
        26
    cydian  
    OP
       2018-08-01 07:14:27 +08:00 via Android
    @bequt 我和你都使用过同一个测试网站( ping.china....)。文中 ping 值数据,区分海内外,且为均值。
    cydian
        27
    cydian  
    OP
       2018-08-01 07:16:42 +08:00 via Android
    @Marfal 暂不清楚国内是否和网宿合作。根据收集的资料来看,JSDelivr 的国内投毒事件就是它干的?具体情况不知。找时间看下 cname。
    isCyan
        28
    isCyan  
       2018-08-01 11:45:33 +08:00
    @cydian JSDelivr 是和 Quatil 合作的,Quantil 是网宿境外子公司。投毒这种事,可能是网宿或者运营商干的。网宿在国内 CDN 行业的地位就不需要我说了
    cydian
        29
    cydian  
    OP
       2018-08-01 12:14:43 +08:00 via Android
    @isCyan 可否分析下网宿在国内 CDN 的地位?
    比较少听说,但还是希望了解下。
    Coioidea
        30
    Coioidea  
       2018-08-01 18:15:59 +08:00
    应该加入 combo (文件拼接)分析
    cydian
        31
    cydian  
    OP
       2018-08-01 18:55:45 +08:00 via Android
    @Coioidea 已经计划在下次的分析中,感谢(❁´ω`❁)
    cydian
        32
    cydian  
    OP
       2018-08-05 22:15:05 +08:00 via Android
    修正:JSDelivr 的 SRI 为半支持。下次分析重新分析所有 CDN 的 SRI 服务。
    感谢各位的收藏。
    Showfom
        33
    Showfom  
       2018-08-09 03:57:43 +08:00 via iPhone
    @cydiansm.ms 没提供过的 CDN 啊,不然你就写 loli.net 提供的好了- - 国外节点用的 cloudflare 理论上和 cdnjs 官方差不多效果
    cydian
        34
    cydian  
    OP
       2018-08-09 07:12:46 +08:00 via Android
    @Showfom 哥,文首我说了 loli 的 cdn 没有官方名字,我就跟图床同名了。。。评论中也说了是 loli 提供的呢!
    Showfom
        35
    Showfom  
       2018-08-09 12:40:23 +08:00 via iPhone
    @cydian 官方名字我说了算的 你就写烧饼博客吧
    cydian
        36
    cydian  
    OP
       2018-08-09 12:52:10 +08:00 via Android
    @Showfom 哇,没想到你就是那个大神。抱歉抱歉,刚刚冒犯了。下次订正。
    biglee0304
        37
    biglee0304  
       2018-09-14 19:40:53 +08:00
    连网宿都没有啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3109 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 14:47 · PVG 22:47 · LAX 07:47 · JFK 10:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.