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

2018-07-31 19:04:12 +08:00
 cydian

多方面分析国内外公开的 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 (可能存在表达错误或者测试失误,请耐心提问或者指出错误),转载需注明==

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

9690 次点击
所在节点    程序员
37 条回复
cydian
2018-07-31 19:33:25 +08:00
@tencentcloud 请问一下 海外 CDN 是否会支持强制 HTTPS (国内早就支持了吧)?提交过需求已经很久了,没有回应。
还有,国外 CDN 的控制台会更换成国内 CDN 的控制台一样吗?设计的有点丑啊。
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
2018-07-31 20:27:20 +08:00
@isCyan 您好,可能在分析时,遗漏了。稍后会进行修正。
修正:核实 Cdnjs 已提供 Auto SRI (在复制按钮的下拉选项中);JSDelivr 的详情页打开稍慢,稍后确认。


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

论添加更新资源方便性还是 JSDelivr,想更新,自己提交到 GitHub 上就更新了

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

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

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

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

© 2021 V2EX