以全新的视角来评测公共 CDN(长文预警)

2018-08-16 11:46:03 +08:00
 SukkaW

之前在 V2EX 上看到这篇「用程序猿视野看公共 CDN 」,感觉写的不仅不详细,还有很多纰漏和错误。可是嘲笑别人写得不好,总得自己写篇更好的才行嘛,所以我就写了这篇对公共 CDN 的评测。

参与评测的公共 CDN 服务商

首先,入选的公共 CDN 都必须是积极更新、积极维护的,意味着新浪、百度、又拍 JSCDN 之流是不参与评测的。

评测角度

海外的公共 CDN 服务商和中国的公共 CDN 服务商的评判方法不同,中国的从 国内节点 和 海外节点 来衡量,海外的从 全球节点 和 中国节点 来衡量

公共 CDN 由于频繁调用,解析结果绝大部分都会被递归 DNS 缓存,解析速度受权威 DNS 影响不大;但是通过使用的权威 DNS 也可以看出公共 CDN 服务商的投入多少

比如是否提供 Lib 库搜索、是否支持一键复制 URL 或者标签


注意,本文不会提供类似 ping 速度或者 IP 数量这类数据,因为这些并不是衡量公共 CDN 的标准。

BootCDN

官网

开放 API ;提供搜索引擎索引;支持一键复制标签和 URL

BootCDN 是国内使用最广泛的公共 CDN。BootCDN 之前和又拍云合作。虽然又拍云与其他 CDN 相比有些亮点( WebP 和 H264 自适应、TLS1.3 等),但节点质量实在不敢恭维,海外也只有香港、新加坡、北美、荷兰四个节点(法兰克福被去掉了)。BootCDN 的官方博客还 记录了一次事故,大意是 CC 攻击使得又拍云封禁了不少 BootCDN 的 URL。

不知道是又拍不再赞助、还是服务质量不能满足需要,BootCDN 今年切换到了京东云 CDN。京东云 CDN 在国内的节点还算数量丰富、覆盖范围也比又拍云好;但是京东云没分配海外节点给 BootCDN,海外会解析到上海电信节点。

关于 BootCDN 使用 DNSPod 免费版,我个人觉得作为国内使用如此广泛的公共 CDN 用免费版的 DNSPod,毕竟不能保障 SLA ;但是话说回来,公共 CDN 毕竟也是免费服务,还是别多嘴了。

css.loli.net

官网

不支持一键复制;至于搜索,可以在 https://cdnjs.loli.net/ajax/libs/ 用 Ctrl / Coomand + F ;

css.loli.net 除了同步 cdnjs 的库,还提供 Google Fonts 和 Gravatar 等服务的反代。

css.loli.net 的前身是兽兽的 css.net,后来兽兽改用 cat.net 几个子域名,直到现在的 loli.net;使用了阿里云 CDN + Cloudflare Pro Plan,全球速度都不错(虽然 Cloudflare 钱不加够是不会分配全部 150 节点的,但是 Pro 已经可以覆盖大部分地区了)。至于自建 DNS,兽兽曾透露过他们每天解析请求多达数十亿,一般的 DNS 服务商不划算。

说到便捷性,css.loli.net 只是提供加速服务,并没有提供类似搜索或者一键复制的功能,而是让开发者将现有的海外公共 CDN 的域名替换为他们的服务域名;虽然数次更换域名难免造成一些不便,但是我依然主力推荐兽兽的公共 CDN 服务。

Staticfile

官网

怎么又是 DNSPod 免费版?

有搜索引擎,支持一键复制文件 URL

和别的公共 CDN 同步 CDNJS 的 Lib 库不同,Staticfile 自己维护了一个 Lib 库,曾经断更过一年(那时候经常没法用最新版本的库),不过现在继续维护了。

Staticfile 用的 CDN 是七牛。七牛的计费系统曾是 V2EX 工单板块的常客,七牛的配置更新是用来衡量咕咕咕的单位,人们像买彩票一样看七牛会分配哪个上游 CDN,至今坊间依然在流传七牛人工向上游服务商手动提交客户的 SSL。当然我这篇文章并不是为了黑七牛,所以赶紧言归正传。七牛之前给 Staticfile 分配了网宿,所以没有 HTTP2 但是有海外节点,之后全面切换到又拍云、有了 HTTP2 但是海外只剩一个法兰克福,现在新分配了阿里云 CDN 但是没了海外节点,颇有些让人哭笑不得。

即便如此,Staticfile 还算是不错的公共库,加上 Staticfile 诞生比 BootCDN 要早,所以在国内使用也非常广泛。

75CDN

官网

有搜索引擎,支持一键复制文件 URL 和标签

75CDN 是 360 前端团队奇舞团维护的,除了同步 CDNJS 以外,还提供 Google Fonts 本土化(不是单纯的反代)。75CDN 号称首个支持 HTTP2 和 SRI 的公共 CDN (如果把大前提缩小在国内的话还是挺正确的);抛去这些可能涉嫌虚假宣传的广告词,75CDN 使用的 360 自家服务同款 CDN 和权威 DNS,速度和 SLA 肯定不会低于 BootCDN 或者 Staticfile ;但是海外节点目前就香港和北美,聊胜于无。

jsDelivr

官网

有搜索引擎,支持一键复制文件 URL 和标签,支持分发 NPM、GitHub、WordPress SVN 的文件

如果有人让我推荐公共 CDN,我一定会推荐 jsDelivr。实时监测各地服务质量、调度多家 CDN 保障全球加载速度;拥有多层缓存和灾备保障 100 SLA。更重要的是 jsDelivr 有 ICP 备案、接入网宿,是海外公共 CDN 服务中很可能唯一提供中国节点的。

jsDelivr 支持从 NPM、GitHub Tag 和 WordPress SVN 上抓取文件并分发,大大降低了开发者使用的难度——直接发个 Release 就可以用了。jsDelivr 每个月会被调用上百亿次,服务 600+ TB 的流量,意味着如果你不是通过 jsDelivr 加载较为热门的库,那么缓存命中率是不会太理想的。

之前网宿的杭州节点遭到入侵,一干二手 CDN 都被 MITIM,jsDelivr 也受到影响、不得不切走网宿,不过问题解决以后又切回来了。这也算是 jsDelivr 的一次事故吧,虽然锅得网宿背。

CDNJS

官网

有搜索引擎,支持一键复制文件 URL 和标签

与其说 CDNJS 是世界上最广泛使用的公共 CDN 服务,或者去探讨 Cloudflare 在海外的加速效果,还不如提一下 CDNJS 对其它公共 CDN 服务的贡献——正如我在前面介绍的那样,国内很多公共 CDN 服务都是在同步 CDNJS 维护的 Lib 库。

CDNJS 的 CDN 由 Cloudflare 赞助,和 Cloudflare 官网同级别的( Enterprise Plan )服务。当然由于众所周知的原因,肯定不推荐面向国内的站点使用这家公共 CDN。考虑一下自己站点访客的主要来源,你会从 CDNJS 的几个镜像中挑选出符合需求的。

Unpkg

官网

有搜索引擎,抓取并分发 NPM 包的文件

开源库、开源框架如果在文档的「 Getting Started 」中提到 CDN 的话,大多都会提一笔如何使用 Unpkg 加载。前身是 npmcdn.com 的 Unpkg 是最早分发 NPM 包的文件的公共 CDN,受到很多开发者的喜爱—— Unpkg 可以很方便的直接使用指定版本的开源库。

不过由于 Unpkg 也是使用的 Cloudflare,在国内的速度并不理想,所以开发者大多都是用 Unpkg 开发和测试,并不会用在生产环境部署。

Bootstrap CDN

官网

支持一键复制文件 URL 和标签

Bootstrap CDN 是 Bootstrap 推荐使用的公共 CDN 服务,因此虽然只提供了 Bootstrap、Font Awesome 和 Bootswatch 三个库的加速服务,但是使用人数众多,每月流量都是 PB 级别。

之前 Bootstrap CDN 由 MaxCDN 赞助,后来 Stackpath 合并了 MaxCDN 以后继续提供赞助;两个域名都可以正常使用。国内速度虽然略好于 Cloudflare,但是依然不理想,所以面向国内的站点也不推荐取用 Bootstrap CDN。


本文原载于我的博客: https://blog.suka.moe/post/public-cdn-in-diffrent-views/ ,采用 CC BY-NC-SA 4.0 许可协议

1850 次点击
所在节点    分享发现
0 条回复

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

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

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

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

© 2021 V2EX