Nginx壓縮輸出配置

   隨着網站內容不斷增長,咱們的網站上的內容和功能也變得豐富多彩,這時就會有一個問題出現----咱們的網站加載會明顯變慢,這對於網站的訪客來講可不是一件愉快的事,那麼咱們該如何優化網站,加快網站的訪問速度呢?減小網站的文件內容是不可能了,但咱們能夠用一種「魔法」把這些文件變小,下面咱們便來認識一下這個奇妙的縮小術-----gzip。javascript

   gzip(GNU-ZIP)是一種壓縮技術,通過它的壓縮,頁面大小會縮小到一種可觀的比例,它的原理就是在服務器端進行壓縮,當壓縮後的數據包到達用戶端的瀏覽器時,會進行解壓,還原出原來的內容,壓縮過程,用戶在訪問網站時並不會感受到。因此gzip的壓縮須要瀏覽器和服務器雙方面的支持。不過不須要咱們擔憂,由於IE、火狐、Opera、谷歌等絕大多數瀏覽器都支持解析gzip過的頁面。css

   Nginx的壓縮輸出由一組gzip壓縮指令來實現。gzip壓縮輸出的相關指令位於http{......}兩個大括號之間:html

gzip on;java

gzip_min_length 1k;後端

gzip_buffers 4 16k;瀏覽器

gzip_http_version 1.1;緩存

gzip_comp_level 2;服務器

gzip_types text/plain application/x-javascript text/css application/xml;app

   指令含義:ide

  1. gzip指令:

    語法:gzip on|off

    默認值:gzip off

    指令用於開啓或關閉gzip模塊。

  2. gzip_buffers指令:

    語法:gzip_buffers number size

    默認值:gzip_buffer 4 4k/8k

    設置系統獲取幾個單位的緩存用戶存儲gzip的壓縮結果數據流。例如4 4k表明以4k爲單位,按照原始數據大小以4k爲單位的4倍申請內存。4 8k表明以8k爲單位,按照原始數據以8k爲單位的4倍申請內存。

    若是沒有設置,默認值是申請跟原始數據相同大小的內存空間去存儲gzip壓縮結果。

  3. gzip_comp_level指令

    語法:gzip_comp_level [1-9]

    默認值:gzip_comp_level 1

    gzip壓縮比,1:壓縮比最小,處理速度最快,9:壓縮比最大但處理速度最慢(傳輸快但更消耗CPU)。通常設置爲3便可。

  4. gzip_min_length指令

    語法:gzip_min_length length

    默認值:gzip+min_length 0

    設置容許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中進行獲取。默認值是0,無論頁面多大都壓縮。建議設置成大於1k的字節數,小於1k的可能越壓越大。即:gzip_min_length 1024。

  5. gzip_http_version指令

    語法:gzip_http_version 1.0|1.1

    默認值:gzip_http_version 1.1

    識別http的協議版本。因爲早期的一些瀏覽器或http客戶端,肯能不支持gzip自解壓,用戶會看到亂碼,因此作一些判斷仍是有必要的。

  6. gzip_proxied指令

    語法:gzip_proxied[off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any…]

    默認值:gzip_proxied off

    Nginx做爲反向代理的時候使用,開啓或關閉後端服務器返回的結果,匹配的前提是後端服務器必需要返回包含"Via"的header頭。

    off——關閉全部的代理結果數據的壓縮。

    experied——啓用壓縮,若是header頭中包含「Expires」頭信息。

    no_cache——啓用壓縮,若是header頭中包含「Cache-Control:no-cache」頭信息。

    no-store——啓用壓縮,若是header頭中包含「Cache-Control:no-store」頭信息。

    private——啓用壓縮,若是header頭中包含「Cache-Control:private」頭信息。

    no_last_modified——啓用壓縮,若是header頭中不包含「Last-Modified」頭信息。

    no_etag——啓用壓縮,若是header頭中不包含「ETag」頭信息。

    auth——啓用壓縮,若是header頭中包含「Authorization」頭信息。

    any——無條件啓用壓縮。

  7. gzip_types指令

    語法:gzip_types mime-type[mime-type…]

    默認值:gzip_types text/html

    匹配mime類型進行壓縮,(不管是否指定)「text/html」類型老是會被壓縮的。

    注意:若是做爲http server來使用,祝配置文件中要包含文件類型配置文件

    http

    {

      include  conf/mime.types;

      ……

    }

    若是你但願壓縮常規的文件類型,能夠把代碼寫成這樣:

    http

    {

      include conf/mime.types;

      gzip on;

      gzip_mim_length 1000;

      gzip_buffers  4 8k;

      gzip_http_version 1.1;

      gzip_types  text/plain application/x-javascript text/css text/html application/xml;

      ……

    }

  8. gzip_vary on指令

    和http頭有關係,加個vary頭,給代理服務器用的,有的瀏覽器支持壓縮,有的不支持,因此避免浪費不支持的也壓縮,因此根據客戶端的HTTP頭來判斷,是否須要壓縮

參考文獻:《實戰Nginx》

相關文章
相關標籤/搜索