nginx開(kāi)啟gzip壓縮功能,?可以使網(wǎng)站的css、JS 、xml、html 文件在傳輸時(shí)進(jìn)行壓縮,提高訪問(wèn)速度, 進(jìn)而優(yōu)化nginx性能!? web網(wǎng)站上的圖片,視頻等其它多媒體文件以及大文件,因?yàn)閴嚎s效果不好,所以對(duì)于圖片沒(méi)有必要支壓縮,如果想要優(yōu)化,可以圖片的生命周期設(shè)置長(zhǎng)一點(diǎn),讓客戶(hù)端來(lái)緩存。 開(kāi)啟gzip功能后,nginx服務(wù)器會(huì)根據(jù)配置的策略對(duì)發(fā)送的內(nèi)容, 如css、js、xml、html等靜態(tài)資源進(jìn)行壓縮, 使得這些內(nèi)容大小減少,在用戶(hù)接收到返回內(nèi)容之前對(duì)其進(jìn)行處理,以壓縮后的數(shù)據(jù)展現(xiàn)給客戶(hù)。這樣不僅可以節(jié)約大量的出口帶寬,提高傳輸效率,還能提升用戶(hù)快的感知體驗(yàn), 一舉兩得; 盡管會(huì)消耗一定的cpu資源,但是為了給用戶(hù)更好的體驗(yàn)還是值得的。
使用Gzip壓縮可以將頁(yè)面大小縮小到原來(lái)的30%甚至更小,這樣用戶(hù)瀏覽頁(yè)面的速度會(huì)更快。Gzip 的壓縮頁(yè)面需要瀏覽器和服務(wù)器雙方都支持,實(shí)際上就是服務(wù)器端壓縮,傳到瀏覽器后瀏覽器解壓并解析。目前,我們不必?fù)?dān)心瀏覽器的問(wèn)題,因?yàn)榻^大多數(shù)的瀏覽器都能夠解析Gzip壓縮過(guò)的頁(yè)面。
Gzip壓縮作用:將響應(yīng)報(bào)?發(fā)送?客戶(hù)端之前可以啟?壓縮功能,這能夠有效地節(jié)約帶寬,并提?響應(yīng)?客戶(hù)端的速度。Gzip壓縮可以配置http,server和location模塊下。Nginx開(kāi)啟Gzip壓縮參數(shù)說(shuō)明:
gzip?on;?????????????????#決定是否開(kāi)啟gzip模塊,on表示開(kāi)啟,off表示關(guān)閉; gzip_min_length?1k;??????#設(shè)置允許壓縮的頁(yè)面最小字節(jié)(從header頭的Content-Length中獲取)?,當(dāng)返回內(nèi)容大于此值時(shí)才會(huì)使用gzip進(jìn)行壓縮,以K為單位,當(dāng)值為0時(shí),所有頁(yè)面都進(jìn)行壓縮。建議大于1k gzip_buffers?4?16k;??????#設(shè)置gzip申請(qǐng)內(nèi)存的大小,其作用是按塊大小的倍數(shù)申請(qǐng)內(nèi)存空間,param2:int(k)?后面單位是k。這里設(shè)置以16k為單位,按照原始數(shù)據(jù)大小以16k為單位的4倍申請(qǐng)內(nèi)存 gzip_http_version?1.1;???#識(shí)別http協(xié)議的版本,早起瀏覽器可能不支持gzip自解壓,用戶(hù)會(huì)看到亂碼 gzip_comp_level?2;???????#設(shè)置gzip壓縮等級(jí),等級(jí)越底壓縮速度越快文件壓縮比越小,反之速度越慢文件壓縮比越大;等級(jí)1-9,最小的壓縮最快?但是消耗cpu gzip_types?text/plain?application/x-javascript?text/css?application/xml;????#設(shè)置需要壓縮的MIME類(lèi)型,非設(shè)置值不進(jìn)行壓縮,即匹配壓縮類(lèi)型 gzip_vary?on;????????????#啟用應(yīng)答頭"Vary:?Accept-Encoding" gzip_proxied?off; nginx做為反向代理時(shí)啟用,off(關(guān)閉所有代理結(jié)果的數(shù)據(jù)的壓縮),expired(啟用壓縮,如果header頭中包括"Expires"頭信息),no-cache(啟用壓縮,header頭中包含"Cache-Control:no-cache"), no-store(啟用壓縮,header頭中包含"Cache-Control:no-store"),private(啟用壓縮,header頭中包含"Cache-Control:private"),no_last_modefied(啟用壓縮,header頭中不包含 ??"Last-Modified"),no_etag(啟用壓縮,如果header頭中不包含"Etag"頭信息),auth(啟用壓縮,如果header頭中包含"Authorization"頭信息) gzip_disable?msie6; (IE5.5和IE6?SP1使用msie6參數(shù)來(lái)禁止gzip壓縮?)指定哪些不需要gzip壓縮的瀏覽器(將和User-Agents進(jìn)行匹配),依賴(lài)于PCRE庫(kù) ###################################################################################################### #如下:修改nginx配置文件?/usr/local/nginx/conf/nginx.conf [root@localhost?~]#?vim?/usr/local/nginx/conf/nginx.conf????????#將以下配置放到nginx.conf的http{?...?}區(qū)域中 #修改配置為 gzip?on;?????????????????????#開(kāi)啟gzip壓縮功能 gzip_min_length?10k;?????????#設(shè)置允許壓縮的頁(yè)面最小字節(jié)數(shù);?這里表示如果文件小于10個(gè)字節(jié),就不用壓縮,因?yàn)闆](méi)有意義,本來(lái)就很小. gzip_buffers?4?16k;??????????#設(shè)置壓縮緩沖區(qū)大小,此處設(shè)置為4個(gè)16K內(nèi)存作為壓縮結(jié)果流緩存 gzip_http_version?1.1;???????#壓縮版本 gzip_comp_level?2;???????????#設(shè)置壓縮比率,最小為1,處理速度快,傳輸速度慢;9為最大壓縮比,處理速度慢,傳輸速度快;?這里表示壓縮級(jí)別,可以是0到9中的任一個(gè),級(jí)別越高,壓縮就越小,節(jié)省了帶寬資源,但同時(shí)也消耗CPU資源,所以一般折中為6 gzip?types?text/css?text/xml?application/javascript;??????#制定壓縮的類(lèi)型,線(xiàn)上配置時(shí)盡可能配置多的壓縮類(lèi)型! gzip_disable?"MSIE?[1-6].";???????#配置禁用gzip條件,支持正則。此處表示ie6及以下不啟用gzip(因?yàn)閕e低版本不支持) gzip?vary?on;????#選擇支持vary?header;改選項(xiàng)可以讓前端的緩存服務(wù)器緩存經(jīng)過(guò)gzip壓縮的頁(yè)面;?這個(gè)可以不寫(xiě),表示在傳送數(shù)據(jù)時(shí),給客戶(hù)端說(shuō)明我使用了gzip壓縮
?如下是線(xiàn)上常使用的Gzip壓縮配置
[root@external-lb02?~]#?cat?/data/nginx/conf/nginx.conf ........ http?{ ....... ????gzip??on; ????gzip_min_length??1k; ????gzip_buffers?????4?16k; ????gzip_http_version?1.1; ????gzip_comp_level?9; ????gzip_types???????text/plain?application/x-javascript?text/css?application/xml?text/javascript?application/x-httpd-php?application/javascript?application/json; ????gzip_disable?"MSIE?[1-6]."; ????gzip_vary?on; }
如果不開(kāi)啟Gzip壓縮功能(即注釋掉Gzip的相關(guān)配置), 查看某個(gè)圖片大小
[root@external-lb02?~]#??ll??-h?/data/web//www/test.bmp -rw-r--r--?1?root?root?453K?3月??14?18:43?/data/web//www/test.bmp
如下可知, 文件沒(méi)有被壓縮,文件傳輸大小還是400多K
如果開(kāi)啟Nginx的Gzip壓縮功能(即打開(kāi)Gzip的相關(guān)配置), 然后再次訪問(wèn)test.bmp圖片, 發(fā)現(xiàn)壓縮后的該圖片文件傳輸大小只有200多K !
通過(guò)上面測(cè)試對(duì)比, 發(fā)現(xiàn)Nginx開(kāi)啟Gzip壓縮功能后, 定義的gzip type的文件在傳輸時(shí)的大小明顯變小, 這樣這會(huì)大大提高nginx訪問(wèn)性能.?
直接用cURL測(cè)試命令:
[root@fvtlb02?~]#?curl?-I?-H?"Accept-Encoding:?gzip,?deflate"?"http://fvtvfc-web.kevin.com/service-worker.js" HTTP/1.1?200?OK Server:?nginx/1.12.2 Date:?Mon,?26?Nov?2018?02:19:16?GMT Content-Type:?application/javascript;?charset=utf-8 Connection:?keep-alive Vary:?Accept-Encoding Last-Modified:?Sun,?25?Nov?2018?22:28:15?GMT Vary:?Accept-Encoding ETag:?W/"5bfb21ff-40be" Content-Encoding:?gzip
如上,response header頭信息中出現(xiàn)”Conten_Encoding: gzip” , 就說(shuō)明Nginx已開(kāi)啟了壓縮 (在瀏覽器訪問(wèn), 通過(guò)F12看請(qǐng)求的響應(yīng)頭部 也是一樣)
Nginx的Gzip壓縮功能雖然好用,但是下面兩類(lèi)文件資源不太建議啟用此壓縮功能。
1) 圖片類(lèi)型資源 (還有視頻文件)原因:圖片如jpg、png文件本身就會(huì)有壓縮,所以就算開(kāi)啟gzip后,壓縮前和壓縮后大小沒(méi)有多大區(qū)別,所以開(kāi)啟了反而會(huì)白白的浪費(fèi)資源。(可以試試將一張jpg圖片壓縮為zip,觀察大小并沒(méi)有多大的變化。雖然zip和gzip算法不一樣,但是可以看出壓縮圖片的價(jià)值并不大)2) 大文件資源原因:會(huì)消耗大量的cpu資源,且不一定有明顯的效果。