多方面分析国内外公开的 CDN
==原创:Cydia·Rice (可能存在表达错误或者测试失误,请耐心提问或者指出错误),转载需注明==
==部分功能未参与此次分析,你可以在下面的评论提出来。部分分析不到位,请耐心指出,切勿大肆吐槽。==
多方便分析了这些 CDN,各有利弊。公开的静态资源库是本次分析的重点,两大厂的自建 CDN 也加入本次分析。从中,我们或许可以了解哪些 CDN 比较可靠,哪些 CDN 服务的内容或区域更加适合我们。
参与分析的 CDN
由于第二个 CDN 官网未有名称,根据域名,暂且和同域名的图床同名。BootCDN 官网不稳定(因为引用了自家的 CDN 啊,所以----)。JSDelivr 因部分地区 algolia 搜索框加载慢,官网体验不佳。
CDN 服务
绿色的 CDN 服务较多。其中,公开 CDN-SM.MS 和 75CDN,较其他 CDN,提供更多服务。自建 CDN 的服务内容主要看源站了,这里不做比较。
CDN 资源来源
绿色表明资源多,有些相当少,百度中规中矩。(对于国内的公共 CDN 来源并不唯一,这里注明主要来源。大多数都提供了“申请添加资源”功能,但只有 75CDN 能够及时响应并添加或手动更新,其他的一般申请都不了了之。)
公开 CDN 域名、链接、证书安全性
百度、BootCDN、CDNJS、Microsoft 的 CDN 域名或与主服务的证书一致,或为可自动续期的证书。理论上,上述 CDN 的 HTTPS 证书可得到保障。(我没有歧视证书的不同=.= )。也可以从中看出,多数公开 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 值也较低。
实际文件测试&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
cydian OP @tencentcloud 请问一下 海外 CDN 是否会支持强制 HTTPS (国内早就支持了吧)?提交过需求已经很久了,没有回应。
还有,国外 CDN 的控制台会更换成国内 CDN 的控制台一样吗?设计的有点丑啊。 |
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 |
3
cydian OP @isCyan 您好,可能在分析时,遗漏了。稍后会进行修正。
修正:核实 Cdnjs 已提供 Auto SRI (在复制按钮的下拉选项中);JSDelivr 的详情页打开稍慢,稍后确认。 V2EX 们对于有帮助的内容,或多喜欢默默收藏。 大家留下一点足迹吧。 期待你们的留言。 |
5
cydian OP @isCyan 核实该问题。
修正:JSDelivr 已提供 Auto SRI (选中文件,进入复制界面后,选择 Tab 中的 SRI ) |
7
lnkn 2018-07-31 22:42:41 +08:00
感谢,刚好现在要考虑 CDN,可以参考了
|
8
fengleidongxi 2018-07-31 22:48:30 +08:00
@cydian 哪个是免费的?
|
10
cydian OP @fengleidongxi 除后面四个自建,其他均为公开 CDN,所有详情均可在其官网获取,公开 CDN 不收费。
|
11
fengleidongxi 2018-07-31 23:14:25 +08:00
@cydian 不收费那怎么营利啊?
|
12
wlchn 2018-07-31 23:31:12 +08:00 via iPhone
根据实际体验国内美国综合来看,jsdelivr 是相对最出色的。
|
13
qiukong 2018-07-31 23:41:23 +08:00
国内我只服 loli 家
|
14
bequt 2018-07-31 23:44:20 +08:00
75 才一年多,不知道后面会不会关。毕竟 360 有前科
|
16
cydian OP @fengleidongxi 所以本文标题中提及了 “还看见了各大厂商对公开服务的态度”
|
18
cydian OP @qiukong loli 属个人服务,是一位 V2EX 伙伴的。loli 已经服务多时,值得信赖。应该给这些无私奉献的人点赞。
|
19
cydian OP @bequt 和该 75CDN 管理者沟通过。他们相对其他 CDN 的管理者更加友好。经过有效沟通后可以让他们快速添加某些库或者提交更新。对于 CDNJS 库里面,没有收录或者更新不及时的库,75CDN 值得选择。目前也是国内少见直接提供 SRI 服务的。
|
20
oonnnoo 2018-08-01 00:37:49 +08:00
不赚钱的业务,360 都是说关就关的
论添加更新资源方便性还是 JSDelivr,想更新,自己提交到 GitHub 上就更新了 |
21
bequt 2018-08-01 00:53:01 +08:00
楼主用什么 ping 这些 cdn 的?
|
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 真不错 |
23
Loyalsoldier 2018-08-01 01:04:38 +08:00
JSDelivr 是最好的
|
24
Marfal 2018-08-01 01:28:49 +08:00
JSDeliver 好像国内是和网宿合作的,国外更是相当好,推荐!
|
25
diggerdu 2018-08-01 04:24:28 +08:00 via iPhone
请问有哪些支持 websocket 呢
|
26
cydian OP @bequt 我和你都使用过同一个测试网站( ping.china....)。文中 ping 值数据,区分海内外,且为均值。
|
27
cydian OP @Marfal 暂不清楚国内是否和网宿合作。根据收集的资料来看,JSDelivr 的国内投毒事件就是它干的?具体情况不知。找时间看下 cname。
|
28
isCyan 2018-08-01 11:45:33 +08:00
@cydian JSDelivr 是和 Quatil 合作的,Quantil 是网宿境外子公司。投毒这种事,可能是网宿或者运营商干的。网宿在国内 CDN 行业的地位就不需要我说了
|
30
Coioidea 2018-08-01 18:15:59 +08:00
应该加入 combo (文件拼接)分析
|
32
cydian OP 修正:JSDelivr 的 SRI 为半支持。下次分析重新分析所有 CDN 的 SRI 服务。
感谢各位的收藏。 |
33
Showfom 2018-08-09 03:57:43 +08:00 via iPhone
|
34
cydian OP @Showfom 哥,文首我说了 loli 的 cdn 没有官方名字,我就跟图床同名了。。。评论中也说了是 loli 提供的呢!
|
37
biglee0304 2018-09-14 19:40:53 +08:00
连网宿都没有啊
|