隨著nginx的發(fā)展,越來(lái)越多的網(wǎng)站使用nginx,因此nginx的優(yōu)化變得越來(lái)越重要,今天我們來(lái)看看nginx的gzip壓縮到底是怎么壓縮的呢?
gzip(GNU- ZIP)是一種壓縮技術(shù)。經(jīng)過(guò)gzip壓縮后頁(yè)面大小可以變?yōu)樵瓉?lái)的30%甚至更小,這樣,用戶瀏覽頁(yè)面的時(shí)候速度會(huì)塊得多。gzip的壓縮頁(yè)面需要瀏覽 器和服務(wù)器雙方都支持,實(shí)際上就是服務(wù)器端壓縮,傳到瀏覽器后瀏覽器解壓并解析。瀏覽器那里不需要我們擔(dān)心,因?yàn)槟壳暗木薮蠖鄶?shù)瀏覽器都支持解析gzip 過(guò)的頁(yè)面。
Nginx的壓縮輸出有一組gzip壓縮指令來(lái)實(shí)現(xiàn)。相關(guān)指令位于http{….}兩個(gè)大括號(hào)之間。
gzip on;
//該指令用于開(kāi)啟或關(guān)閉gzip模塊(on/off)
gzip_min_length 1k;
//設(shè)置允許壓縮的頁(yè)面最小字節(jié)數(shù),頁(yè)面字節(jié)數(shù)從header頭得content-length中進(jìn)行獲取。默認(rèn)值是0,不管頁(yè)面多大都?jí)嚎s。建議設(shè)置成大于1k的字節(jié)數(shù),小于1k可能會(huì)越壓越大。
gzip_buffers 4 16k;
//設(shè)置系統(tǒng)獲取幾個(gè)單位的緩存用于存儲(chǔ)gzip的壓縮結(jié)果數(shù)據(jù)流。4 16k代表以16k為單位,安裝原始數(shù)據(jù)大小以16k為單位的4倍申請(qǐng)內(nèi)存。
gzip_http_version 1.1;
//識(shí)別http的協(xié)議版本(1.0/1.1)
gzip_comp_level 2;
//gzip壓縮比,1壓縮比最小處理速度最快,9壓縮比最大但處理速度最慢(傳輸快但比較消耗cpu)
gzip_types text/plain application/x-javascript text/css application/xml
//匹配mime類型進(jìn)行壓縮,無(wú)論是否指定,”text/html”類型總是會(huì)被壓縮的。
gzip_vary on;
//和http頭有關(guān)系,加個(gè)vary頭,給代理服務(wù)器用的,有的瀏覽器支持壓縮,有的不支持,所以避免浪費(fèi)不支持的也壓縮,所以根據(jù)客戶端的HTTP頭來(lái)判斷,是否需要壓縮
nginx 配置gzip段如下:
gzip on;
gzip_min_length 1k;
gzip_buffers 16 64k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;