nginx優化:配置gzip壓縮頁面提高訪問速度(nginx1.18.0)


一,為什么nginx要使用gzip

1,壓縮的作用:

頁面使用gzip壓縮之后,

頁面大小可以壓縮到原來的1/7左右,

傳輸速度和頁面打開時間都可以大幅度提高,

有利於用戶訪問頁面體驗的提升

 

2,Nginx實現gzip壓縮的原理:

   通過ngx_http_gzip_module模塊攔截請求,

    並對需要做gzip的類型做gzip壓縮

     

3,   ngx_http_gzip_module是Nginx默認集成的,

      不需要重新編譯,直接開啟即可

 

說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/

說明:作者:劉宏締 郵箱: 371125307@qq.com

 

二,gzip模塊使用例子:

 

    gzip on;
    gzip_min_length 1k;
    gzip_disable "MSIE [1-6]\.";
    gzip_comp_level 5;
    gzip_types text/css text/javascript text/xml text/plain application/json application/javascript application/x-javascript application/xml application/xml+rss;
    gzip_http_version 1.1;

 

各個指令的說明:

gzip on;

                開啟gzip模式,

                 默認值是off,就是不啟用gzip壓縮功能

                當然是要把它設置為on了

gzip_min_length 1k;

                 設置允許壓縮的頁面最小字節數,頁面字節數從header頭中的Content-Length中進行獲取。

                 太小的文件內容壓縮之后效果不明顯,甚至會比不壓縮時更大。

                 默認值是20,這個值過小,

                一般設置為長度不小於1k

gzip_disable

                 IE6對Gzip支持效果較差,所以針對它不啟用

gzip_comp_level : 

                             gzip 壓縮級別,1-9,

                             數字越大壓縮的比例越高,但也越占用CPU時間

                             它的默認值是1,通常會設置為5或6

                             如果cpu占用高,設置為2或3也可以

gzip_http_version :

                              設置gzip壓縮所支持的最小HTTP版本,

                               如果低於該版本不使用gzip壓縮。

                               默認值是1.1

                                一般使用1.1。

gzip_types :

                    針對哪些類型的頁面才啟用gzip壓縮,有多個值則用空格分隔。

                     通配符*可以匹配任意類型,但不要用這個值。

                     只有js/css/html/text這幾類內容壓縮才有明顯的效果,

                     圖片和視頻等本身經過壓縮算法處理過的文件啟用壓縮也沒有明顯效果。

                     1,不管是否指定text/html類型,該類型的響應總是啟用壓縮,

                        所以這個值可以不用寫上

                     2,這些文件類型對應的mime-type可以參考nginx/conf/mime.types文件

                     3,常用的9個值:

                       text/css text/javascript text/xml text/plain 

                       application/json application/javascript application/x-javascript 

                       application/xml application/xml+rss 

 

三,例子中未用到的其他設置項:

    gzip_buffers 4 16k;

    gzip_vary on;

    gzip_proxied any;

 

gzip_vary:

               vary header支持,

               on的話會在Header里增加"Vary: Accept-Encoding"

              這個值可以讓前端的緩存服務器緩存經過GZIP壓縮的頁面,

               例如用Squid緩存經過nginx壓縮的數據

               如果在nginx前端使用了squid或varnish,

               可以設置此值為on

 

gzip_proxied    

                      nginx 做前端代理時啟用該選項,

                      如果值是 any, 表示無論后端服務器的headers頭返回什么信息,

                       都無條件啟用壓縮

                       如果用了nginx作反向代理,

                       設置此值為any

gzip_buffers:

                      設置用於處理壓縮的緩沖區大小。

                       默認值:32 4k|16 8k

                        32 4k代表以4k為單位將響應數據以4k的32倍(128k)的大小申請內存。

                       建議此項不設置,使用默認值

 

四,查看gzip的壓縮效果

1,使用curl查看

#-I, --head          Show document info only   只顯示頭信息

#-H,--header LINE:   Pass custom header LINE to server (H)   自定義請求頭的信息

[root@localhost curl]# curl -I -H "Accept-Encoding: gzip, deflate" http://www.lhdtest.net
HTTP/1.1 200 OK
Server: openresty
Date: Mon, 27 Apr 2020 07:59:38 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: SESSID_WEB=0ks2eh03vmv4dhje29ggojl1bs; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Encoding: gzip

說明:看到Conten_Encoding: gzip則表示gzip壓縮已生效

 

2,通過瀏覽器查看效果

從瀏覽器端響應頭信息看gzip是否生效:

看截圖:壓縮前和壓縮后的效果對比:

壓縮前:

壓縮后: 

說明:我使用的是firefox的web控制台,大家也可用yslow之類的插件試試

 

五,查看nginx的版本:

[root@centos8 soft]# /usr/local/soft/nginx-1.18.0/sbin/nginx -v
nginx version: nginx/1.18.0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM