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

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

  •  2
     
  •   SukkaW · 2018-08-16 11:46:03 +08:00 · 1848 次点击
    这是一个创建于 2073 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    参与评测的公共 CDN 服务商

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

    • BootCSS 国内最著名、使用最广泛的公共 CDN 之一
    • css.loli.net 由土豪兽兽维护的公共 CDN,css.net 的船新升级版本
    • Staticfile 由七牛维护的公共 CDN 服务
    • 75CDN 由 360 的奇舞团运营的公共 CDN
    • jsDelivr 由 Prospect One 运营,非常快速和非常可靠的公共 CDN
    • CDNJS 非常著名的公共 CDN,国内大部分公共 CDN 都是和它维护的库同步
    • Unpkg 著名的公共 CDN,从 NPM 抓取 Package 中的文件
    • Bootstrap CDN Bootstrap 官方推荐的公共 CDN

    评测角度

    • HTTPS 和 HTTP2
    • 服务商 直接关系到公共 CDN 的质量和 SLA
    • 节点数量和质量 关系到终端用户的速度

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

    • 加载速度 从国内和海外两个部分衡量
    • 服务域名和使用的权威 DNS 决定了公共 CDN 的 SLA 和解析速度

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

    • 便捷性 是否方便开发者使用

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


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

    BootCDN

    官网

    • 支持 HTTPS,支持 HTTP2
    • 京东云 CDN
    • 丰富的国内节点
    • 没有海外节点
    • 在国内速度还不错,海外的话不敢苟同
    • cdn.bootcss.com,使用 DNSPod 免费版
    • 便捷性:★★★★★

    开放 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,支持 HTTP2
    • 国内使用阿里云 CDN,海外使用 Cloudflare ( Pro Plan )
    • 非常丰富的国内节点
    • 丰富的海外节点
    • 全球速度都很好
    • *.loli.net,自建权威 DNS
    • 便捷性:★★

    不支持一键复制;至于搜索,可以在 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

    官网

    • 支持 HTTPS,不一定支持 HTTP2
    • 著名的二手 CDN 贩子七牛云 CDN,上游说不准是哪个
    • 丰富的国内节点
    • 很可能没有海外节点
    • 国内的速度还是不错的
    • cdn.staticfile.org,DNSPod 免费版

    怎么又是 DNSPod 免费版?

    • 便捷性:★★★★

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

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

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

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

    75CDN

    官网

    • 支持 HTTPS,支持 HTTP2,提供 SRI (开启 SRI 教程
    • 360 自家服务同款 CDN
    • 丰富的国内节点
    • 有几个海外节点
    • 国内的速度还是不错的
    • lib.baomitu.com,360 官网同款 DNS
    • 便捷性:★★★★★

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

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

    jsDelivr

    官网

    • 支持 HTTPS,支持 HTTP2,提供 SRI
    • 网宿、Fastly、Stackpath、Cloudflare Business Plan
    • 非常丰富的国内节点
    • 非常丰富的海外节点
    • 全球的速度都非常优秀
    • cdn.jsdelivr.net,NS1 和 Rage4 主从 DNS
    • 便捷性:★★★★★

    有搜索引擎,支持一键复制文件 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

    官网

    • 支持 HTTPS,支持 HTTP2,提供 SRI
    • Cloudflare Enterprise Plan
    • 没有国内节点( cloudfalre.com 肯定不会备案,所以没法启用 China Access )
    • 非常丰富的海外节点
    • 国内的速度很不理想
    • 海外的速度非常优秀
    • cdnjs.cloudflare.com,Cloudflare 官网同款 DNS
    • 便捷性:★★★★

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

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

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

    Unpkg

    官网

    • 支持 HTTPS,支持 HTTP2
    • Cloudflare Free Plan
    • 没有国内节点
    • 非常丰富的海外节点
    • 国内的速度很不理想
    • 海外的速度非常优秀
    • unpkg.com,Cloudflare DNS
    • 便捷性:★★★

    有搜索引擎,抓取并分发 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 许可协议

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2885 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:07 · PVG 08:07 · LAX 17:07 · JFK 20:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.