15、Nginx-網頁壓縮傳輸

1、gzip壓縮技術

gzip(GNU-ZIP)是一種壓縮技術,經過gzip壓縮後,頁面大小可以變為原來的30%甚至更少,這樣用戶訪問的時候速度會快得多。gzip網頁壓縮的實現需要瀏覽器和服務器的支持。

gzip壓縮的過程:

首先在服務器端壓縮,然後傳到瀏覽器端後解壓,當瀏覽器支持gzip解壓時,會在請求消息頭中包含Accept-Encoding:gzip,這樣Nginx就會向瀏覽器發送經過gzip後的內容,同時在響應消息頭中加入Content-Encoding:gzip,這是gzip後的內容,告知瀏覽器要先解壓才能解析輸出。

2、網頁壓縮傳輸配置

Nginx服務器為網頁壓縮專門提供了gzip模塊,並且模塊中的相關指令均可以設置在http,server,location塊中,實現服務器端按照指定的設置進行壓縮,具體指令如下:

  • gzip:用於開啟或關閉gzip模塊;

  • gzip_buffers:設置系統獲取幾個單位的緩存用於存儲gzip的壓縮結果數據流;

  • gzip_comp_level:gzip壓縮比,壓縮級別是1~9,1的壓縮級別最低,9的壓縮級別最高,壓縮級別越高壓縮率越大,壓縮時間越長;

  • gzip_disable:對一些特定的User-Agent不使用壓縮功能;

  • gzip_min_length:設置允許壓縮的頁面最小字節數,頁面字節數從響應消息頭的Content-Length中進行獲取;

  • gzip_http_version:識別HTTP協議版本,其值可以是1.1(默認值)或1.0;

  • gzip_proxied:用戶設置啟用或禁用從代理服務器上收到響應內容的gzip壓縮功能;

  • gzip_types:匹配MIME類型進行壓縮,且無論是否指定,text/html類型總是會被壓縮的;

  • gzip_vary:用於在響應消息頭中添加Vary,Accept-Encoding,使代理服務器根據請求頭中的Accept-Encoding識別是否啟用gzip壓縮;

1、修改配置文件

15、Nginx-網頁壓縮傳輸

2、訪問測試

15、Nginx-網頁壓縮傳輸

Content-Encoding為gzip類型,Content-Type為html,Transfer-Encoding為chunked表示內容長度不確定;

除了上述配置外,在實際開發 中還可以具體配置壓縮比,緩存大小,對於代理是否採用壓縮等詳細的設置:

  • gzip_buffers 4 16k; //按照原始數據大小以16KB為單位的4倍申請內存;

  • gzip_comp_level 4; //壓縮等級;

  • gzip_disable "MSIE [1-6]."; //IE6時,不進行壓縮,防止出現頁面假死現象;

  • gzip_min_length 5k; //當響應內容大於5kb時進行壓縮輸出,且一般建議最小值設置為1kb,當小於1kb時,可能會出現越壓越大的問題;

  • gzip_http_version 1.0;

  • gzip_proxied any;

  • gzip_vary on;

gzip_proxied常用參數:

  • any:無條件壓縮所有響應數據;

  • off:關閉反向代理的壓縮;

  • expired:如果響應消息頭包含Expires,啟用壓縮;

  • no-cache:如果響應消息頭包含Cache-Control:no-cache,啟用壓縮;

  • no-store:如果響應消息頭包含Cache-Control:no-store,啟用壓縮;

  • private:如果響應消息頭包含Cache-Control:private,啟用壓縮;

  • no_last_modified:如果響應消息頭中不包含Last-Modified,啟用壓縮;

  • no_etag:如果響應消息頭中不包含ETag,啟用壓縮;

  • auth:如果響應消息頭中包含Authorization頭信息,啟用壓縮;


分享到:


相關文章: