讓 CDN 更省流量的 Brotli 演算法詳解

2022-02-04 09:44:15 字數 1905 閱讀 8823

早年,我還是學生的時候,時常會鼓搗自己的個人**,其中最困擾我的問題就是源站伺服器易崩潰。作為學生,一方面我沒有足夠的錢購買高質量的伺服器,另一方面一年的流量費用算下來也挺貴的,要花掉我不少的生活費。

那麼到底有沒有好的辦法可以幫助我們減少**流量開支,降低源站伺服器的壓力?

這幾年 cdn **越來越低,讓我找到了完美的解決方法。一般來說,**開啟 cdn 加速之後,會將**內容快取到 cdn 節點伺服器上,這個時候如果有訪問的話,就會直接從 cdn 節點伺服器返回**資料,不需要再從源站調取資料。

這個方法解決了源站老是崩潰的問題,同時 cdn 流量**比源站流量**低很多,只要設定得當,可以比較不錯的減少**在流量上的開支。

除了**降低之外,cdn 的技術含量這幾年也越來越高,本文就以 又拍雲 cdn 的 brotli 壓縮演算法為例,講講它是如何做到減少流量消耗的。

google 認為網際網路使用者的時間是寶貴,尤其不應該浪費在無用的網頁載入中,因此推出了無失真壓縮演算法 brotli。brotli 通過變種的 lz77 演算法、huffman 編碼以及二階文字建模等方式進行資料壓縮。

△ 來自網路

通過上圖,我們可以看到 brotli 與常用的壓縮演算法 bzip2、gzip、lzma2 對比,壓縮比上有明顯的優勢。

對於現在的網際網路來說,最重要的效能可能是解壓縮速度。即使在瀏覽器和移動裝置等資源有限的情況下,客戶端能夠快速解壓,有更良好的使用者體驗是現在所追求的。而在解壓縮速度上,brotli 依舊表現出色。

△ 來自網路

圖中我們看到 brotli 的解壓縮速度與 gzip 非常相似,但是遠遠超出 bzip2 和 lzma2,儘管它們相較於 gzip 有更好的壓縮比,但是它們解壓縮的速度要慢幾倍,和 brotli 一比,他們的優勢消失殆盡。

與現在的常用壓縮演算法比,brotli 的優勢盡顯無疑。與 gzip 相比在 web 資源壓縮方面,brotli的壓縮效能提公升了 17%-25%。當 brotli 壓縮級別為1時,壓縮率比 gzip 壓縮最高等級為 9 時還要高。

brotli 演算法憑藉它優異的壓縮效能,在行業內迅速普及,到目前為止,除了 ie 和 opera mini之外,幾乎所有的主流瀏覽器都已支援 brotli 演算法。

△ brotli 演算法支援情況

隨著 cdn 技術的不斷成熟,合理利用 cdn 可以大大降低源站伺服器遇到的併發壓力,減少源站流量,節省開支。同時現在 cdn 的防 d 手段也在發展,我們也不用擔心因為 ddos 攻擊而「破產」(當年因為這個一直不敢用 cdn,哈哈)。

關於如何使用 brotli 壓縮演算法,這個不用操心。又拍雲 cdn 預設支援 brotli 壓縮演算法,只需要接入 cdn 就可以使用高效能的web資源壓縮演算法了。由於並非所有的瀏覽器都支援 brotli 演算法,所以在 cdn 邊緣節點,又拍雲會同時提供通過 brotli 演算法壓縮的檔案和原始資源檔案。當客戶端不支援 brotli 演算法時,又拍雲會選擇提供 gzip 演算法來壓縮原始檔案並提供給客戶端。當客戶端同時支援兩種演算法時,又拍雲 cdn 會優先響應 br 版本檔案。

借助壓縮效率更高的 brotli 演算法,對比 gzip 壓縮 cdn 流量再減少 20%,在節約流量成本的同時,讓使用者有更好的使用體驗,的確是乙個不錯的選擇。

推薦閱讀:

https 安全級別檢測 免費 ssl 證書領取入口

啟用 brotli 壓縮演算法,對比 gzip 壓縮 cdn 流量再減少 20%

只為更快 更省 更安全的 Azure CDN

經過最近一次更新,azure cdn 高階版服務 https ssl 證書的申請方式有所改進啦,除了現有的 azure cdn 代為申請證書外,還支援使用者自己申請的證書。同時自 2017 年 5 月 1 日起,azure cdn 高階版服務降價了哦,使用高階版的小夥伴們能夠更節省地使用了 急性子想...

更智慧型化的CDN技術,CDN邁向3 0時代

1.0到2.0,20年技術演進 cdn content delivery network 即內容分發網路。其目的是通過在現有的internet中增加一層新的網路架構,將 的內容發布到最接近使用者的網路 邊緣 使使用者可以就近取得所需的內容,提高使用者訪問 的響應速度。cdn pop point of...

讓Spring Security更安全的配置辦法

spring security,不錯的安全框架,但在實際專案中,如何讓安全更安全呢?以下是在實際專案中總結的經驗之談.以spring secuirty 4.0.1版本為基礎 1.登入時的引數名 username,password 不要使用預設的.登入,退出的url不要使用預設的.secuiry中預設...