Nginx的gzip壓縮的原理和設定引數

OldBoy~發表於2017-11-16

開啟Nginx gzip壓縮非常簡單,達到的效果可以壓縮靜態檔案大小、提高頁面訪問速度、節省流量和頻寬是很有幫助的,也為使用者省去了很多流量;唯一的不足就是開啟之後伺服器這邊會增加運算,進行壓縮運算處理,就比如壓縮級別,伺服器cpu會有開銷。

原理舉例

比如一個css檔案,裡面肯定有很多font-size、換行、字型等標籤和內容,這種重複的內容會很多,壓縮的時候它會對重複的字串進行掃描,它會把這些重複的統計出來,統計出來會排序,排序之後會定義一個詞表,詞表是用來做替換的,就本來比如一個十個字元長度的字串,它會用兩個長度的字元替換,這樣就變成了原來的五分之一,其他的也是一樣,比如檔案裡有大量大段的重複內容,這樣壓縮效果會更明顯。這樣簡單的替換就實現了壓縮。越是重複的內容越多,壓縮的效率越高,相反,效率越低。

配置引數

server {
  listen 80; //監聽埠
   server_name localohst; //監聽域名
   gzip on;  //開啟gzip壓縮
   gzip_min_length 1k; //最小的長度,1K,檔案如果太小,小於1K,就不會壓縮,因為沒準壓縮之後還要變大
   gzip_buffers 4 16k;    //設定快取的單位,壓縮的時候要分配的緩衝區,緩衝區以16K為單位,往緩衝區寫入內容的時候超過16K的時候,那麼就會按照4倍的大小建立新的緩衝區,也就是建立一個64K的儲存,這樣把壓縮的內容倒進去
   gzip_comp_level 6;   //壓縮級別1-9,比如level為1的話,壓縮的比例比較低,但是效率比較高,比如100K的檔案壓縮之後還剩40K或者50K,但是處理的時間很短;如果level為9的話,壓縮的效果最好,效率會低一點,比如還是100K的檔案,壓縮的會更小,甚至20K ,這樣對cpu消耗會高點,一般設定中間差不多
   gzip_type text/plain application/javascript text/css application/xml;  //定義了壓縮的型別,比如文字的,js、css等文字檔案壓縮,像是圖片啊,就沒必要定義了,本身就支援,這裡就不需要定義了,預設壓縮text/html 不需要指定,否則報錯
   location / {
     root /var/www/a.com; //根目錄定位
     index index.html;
   }
}

相關文章