以全新的視角來評測公共 CDN

之前在 V2EX 上看到這篇「用程序猿視野看公共 CDN」,感覺寫的不僅不詳細,還有很多紕漏和錯誤。可是嘲笑別人寫得不好,總得自己寫篇更好的才行嘛,所以我就寫了這篇對公共 CDN 的評測。

達成成就:360 奇舞團的怡紅公子,還有獸獸都來留言惹(都是大佬耶~ 嗚哇~)

參與評測的公共 CDN 服務商

首先,入選的公共 CDN 都必須是積極更新、積極維護的,意味着新浪、百度、又拍 JSCDN 之流是不參與評測的。

  • BootCSS 國內最著名、使用最廣泛的公共 CDN 之一
  • css.loli.net 由土豪獸獸維護的公共 CDN,css.net 的船新升級版本
  • Staticfile 由七牛維護的公共 CDN 服務
  • 75CDN 由 360 的奇舞團運營的公共 CDN
  • 今日頭條公共 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 畢竟也是免費服務,還是別多嘴了。

毫無徵兆地,中國最著名的公共 CDN 服務提供商 BootCDN 於 2018 年 10 月 1 日停止了服務。

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(考慮到大前提是在國內的話,還是挺正確的),除此以外還率先支持 ES Module Import,走在了各大公共 CDN 前列。 從服務質量上來看,75CDN 使用的 360 自家服務同款 CDN 和權威 DNS,速度和 SLA 肯定不會低於 BootCDN 或者 Staticfile;但是海外節點目前就香港和北美,聊勝於無。

今日頭條公共 CDN

官網

  • 支持 HTTPS,不一定 支持 HTTP2
  • 著名的二手 CDN 販子七牛雲 CDN,上游說不準是哪個
  • 豐富的國內節點
  • 大量的 海外節點(s4 子域名除外)
  • 全球的速度都不錯的
  • s1.pstatp.com s2.pstatp.com s3.pstatp.com s4.pstatp.com,DNSPod 免費版

怎麼還是 DNSPod 免費版?

  • 便捷性:★★★★★

有搜索引擎,提供文件 URL,支持設置緩存響應頭時長

說實在的,其實今日頭條的公共 CDN(由母公司字節跳動的團隊負責運營)本來不應該入選評測的——上游同樣是 CDNJS,但是並沒有定時同步了,jquery 才更新到 3.2.1,還大字寫了個什麼禁止非法網站調用啥的。但是之所以還要再補充關於它的說明主要是這個公共 CDN 非常有趣。 首先他不是直接給你直鏈,你點擊文件以後跳轉的鏈接是隨機分配的,可能是受到早期前端優化中域名分片的影響、以及間接實現在多家 CDN 之間的負載均衡吧。s1 域名接的是網宿 CDN,全球版,海外除了網宿自己的節點以外還有 cdnetworks 的節點;s2 和 s3 阿里雲 CDN 全球版,海外節點也很豐富的;只有 s4 域名接的是網宿國內版。除此以外還支持指定響應頭緩存時長(URL 中有參數)也非常有趣——明明公共庫文件都是長期不改變的,直接設置一年甚至兩年的 cache-control 就行了的。 雖然這個公共庫處於年久失修的狀態,但是考慮到它接的 CDN 上游都挺有趣的,還是可以考慮體驗一下的,但是如果要用於生產環境的話還是留個心眼比較好。

jsDelivr

官網

  • 支持 HTTPS,支持 HTTP2,提供 SRI
  • 網宿、Fastly、Stackpath、Cloudflare Business Plan
  • 非常豐富的國內節點
  • 非常豐富的海外節點
  • 全球的速度都非常優秀
  • cdn.jsdelivr.net,NS1 和 Rage4 主從 DNS
  • 便捷性:★★★★★

有搜索引擎,支持一鍵複製文件 URL 和標籤,支持分發 NPM、GitHub、WordPress SVN 的文件

如果有人讓我推薦公共 CDN,我一定會推薦 jsDelivr。通過 RUM 實時監測各地服務質量、調度多家 CDN 保障全球加載速度;擁有多層緩存和災備保障 100 SLA。更重要的是 jsDelivr 有 ICP 備案、接入網宿,很可能是海外公共 CDN 服務中唯一提供中國節點的。

jsDelivr 支持從 NPM、GitHub Tag 和 WordPress SVN 上抓取文件並分發,大大降低了開發者使用的難度——直接發個 Release 就可以用了。jsDelivr 每個月會被調用上百億次,服務 620+ TB 的流量,意味着如果你不是通過 jsDelivr 加載較爲熱門的庫,那麼緩存命中率是不會太理想的。

之前網宿的杭州節點遭到入侵,一干二手 CDN 都被 MITM,jsDelivr 也受到影響、不得不切走網宿,不過問題解決以後又切回來了。這也算是 jsDelivr 的一次事故吧,雖然鍋得網宿背;過了一年 jsDelivr 的 GSLB 服務商 Cedexis 又出現故障、不得不暫時將全部解析至 Cloudflare。但不管怎麼說,jsDelivr 總體上仍然是非常優秀、SLA 100、值得在生產環境上使用的公共 CDN。

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 開發和測試,並不會用在生產環境部署。國內也有一些 Unpkg 的鏡像,但是我還是覺得 jsDelivr 更好用一些。

Bootstrap CDN

官網

  • 支持 HTTPS,支持 HTTP2
  • MaxCDN、Stackpath
  • 沒有國內節點
  • 豐富的海外節點
  • 國內的速度不太理想
  • 不錯的海外的速度
  • stackpath.bootstrapcdn.com maxcdn.bootstrapcdn.com,Route53 和 NS1 主從 DNS
  • 便捷性:★★★

支持一鍵複製文件 URL 和標籤

Bootstrap CDN 是 Bootstrap 官方推薦使用的公共 CDN 服務,因此雖然只提供 Bootstrap、Font Awesome 和 Bootswatch 三個庫的加速服務,但是使用人數衆多,每月流量消耗都已經達到 PB 級別。

之前 Bootstrap CDN 由 MaxCDN 贊助,後來 Stackpath 合併了 MaxCDN 以後繼續提供贊助;兩個域名都可以正常使用。國內速度雖然略好於 Cloudflare,但是依然不理想,所以面向國內的站點也不推薦取用 Bootstrap CDN。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章