㈠ 請教Nginx 中對 application/json 格式進行 gzip 壓縮無效的問題
默認情況下,開啟gzip不會對application/json類型的響應做壓縮處理,需要通過以下指令使nginx對application/json格式進行gzip壓縮:
gzip on;
gzip_types application/json application/javascript text/css image/svg+xml;
㈡ Nginx伺服器中的Gzip配置參數詳解
gzip on; 開啟gzip off關閉
gzip_min_length 1k; 設置允許壓縮的頁面最小位元組(從header頭的Content-Length中獲取) 建議大於1k
gzip_buffers 4 16k; 以16k為單位,按照原始數據大小以16k為單位的4倍申請內存
gzip_http_version 1.1; 識別http協議的版本,早起瀏覽器可能不支持gzip自解壓,用戶會看到亂碼
gzip_comp_level 2; 等級1-9 最小的壓縮最快 但是消耗cpu
gzip_types text/plain application/x-javascript text/css application/xml; 匹配壓縮類型
gzip_vary on; 啟用應答頭"Vary: Accept-Encoding"
gzip_proxied off;
nginx做為反向代理時啟用,off(關閉所有代理結果的數據的壓縮),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參數來禁止gzip壓縮 )指定哪些不需要gzip壓縮的瀏覽器(將和User-Agents進行匹配),依賴於PCRE庫
gzip 決定是否開啟gzip模塊
gzip_buffers 設置gzip申請內存的大小,其作用是按塊大小的倍數申請內存空間,param2:int(k) 後面單位是k
gzip_comp_level 設置gzip壓縮等級,等級越底壓縮速度越快文件壓縮比越小,反之速度越慢文件壓縮比越大
gzip_min_length 當返回內容大於此值時才會使用gzip進行壓縮,以K為單位,當值為0時,所有頁面都進行壓縮
gzip_types 設置需要壓縮的MIME類型,非設置值不進行壓縮
param:text/html|application/x-javascript|text/css|application/xml
對於多數以文本為主的站點來說,文本自身內容占流量的絕大部分。雖然單個文本體積並不算大,但是如果數量眾多的話,流量還是相當可觀。啟用GZIP以後,可以大幅度減少所需的流量。
㈢ gzip壓縮實踐
為提高網頁載入速度,啟用 gzip 縮減資源的大小是非常常見的手段。現代瀏覽器均支持 gzip 壓縮,並會為HTTP請求自動協商此類壓縮。
本文將對 gzip 的實踐和原理做一個簡單的總結。
web伺服器在接收到瀏覽器的請求之後,會檢查瀏覽器可以接受哪些壓縮方法,詳情可見下圖。
瀏覽器在請求頭中會帶上 Accept-Encoding 這個參數來說明自己支持哪些內容編碼方式。
而服務端返回的 Response Headers 中則存在一個 Content-Encoding ,用來說明數據的壓縮方法。
幾乎所有的瀏覽器都已經支持了 gzip ,並且有請求頭的驗證,所以基本不需要擔心兼容相關的問題。
壓縮前後的體積前後差異,可以在控制台中看到。可以說,對於js、css文件的壓縮率還是比較可觀的。
經過這種方式的配置,在服務端響應請求的時候會對文件進行壓縮,之後返回壓縮過後的內容。不過壓縮這一過程多多少少會佔用一些服務端的性能,具體壓縮的程度,也就是 gzip_comp_level 設置的值也會影響到佔用性能的多少,接下來我們來看一些網上搜集到的數據,了解不同值的設置對文件大小和CPU佔用的影響。
可以看到,壓縮級別從0到1時,文件大小明顯減小,CPU消耗略微上漲。而在之後文件減小的速率明顯放緩,在達到了5之後繼續增加壓縮級別,文件的體積也幾乎沒有縮小,但CPU消耗卻有較為明顯的上漲。
根據結論可以看出,如果是在服務端使用 gzip 壓縮的話,考慮到性能和壓縮率的取捨,將壓縮級別設置為一個較低的值,比如2之類的,是比較合理的。
我們也可以選擇在打包構建項目的時候就對文件進行gzip壓縮
這邊以打包一個 webpack 的前端項目為例
運行構建命令後可以看到,在生成 .js 和 .css 的同時還生成了對應的 .gz 文件。
在這種方式的壓縮中,我們完全可以把壓縮等級設置為一個比較高的值(默認),畢竟只是略微影響打包的時間,卻能獲取一個更小的體積的包,還是比較值得的。
以 nginx 為例,靜態壓縮需要使用 http_gzip_static_mole 這個模塊,這個模塊不是默認的,應使用 --with-http_gzip_static_mole 的配置參數啟用它
之後再配置中添加
這樣便可開啟靜態壓縮。
需要注意以下幾點:
㈣ Nginx啟用壓縮及開啟gzip 壓縮的方法
gzip(GNU-ZIP)是一種壓縮技術。經過gzip壓縮後頁面大小可以變為原來的30%甚至更小,這樣,用戶瀏覽頁面的時候速度會塊得多。
gzip 的壓縮頁面需要瀏覽器和伺服器雙方都支持,實際上就是伺服器端壓縮,傳到瀏覽器後瀏覽器解壓並解析。瀏覽器那裡不需要我們擔心,因為目前的巨大多數瀏覽器 都支持解析gzip過的頁面。
Nginx的壓縮輸出有一組gzip壓縮指令來實現。相關指令位於http{….}兩個大括弧之間。
具體配置如下
㈤ 伺服器開啟Gzip壓縮功能
在負載均衡中有一個必須要做的事情就是給伺服器開啟Gzip壓縮功能,對用戶請求的頁面進行壓縮處理,以達到節省網路帶寬,提高網站速度的作用。
Gzip是若干文件壓縮程序的簡稱,通常指GNU計劃的實現,此處的Gzip代表的就是GUN ZIP,這也是HTTP1.1協議定義的兩種壓縮方法中最常用的一種壓縮方法,客戶端瀏覽器大都支持這種壓縮格式。
接下來,將介紹Apache、Nginx 如何開啟Gzip壓縮。
Apache開啟Gzip要看查看是否已經開啟mod_deflate模塊,如果沒有則需要先載入,在配置文件httpd.conf中將
前面的#號去掉。另外,如果對Apache的配置文件不太懂的客戶在修改配置文件之前對配置文件進行備份。
開啟模塊後,在httpd.conf配置文件的最下面空白處添加一下內容:
其中DeflateCompressionLevel 的意思是壓縮等級,共分為1-9,9級為最高,不建議使用太高的壓縮比,這樣會對CPU產生太大的負擔。
打開配置文件 nginx.conf找到Gzip on 把前面的注釋符號#去掉即可開啟GZIP服務。然後配置GZIP即可。
下面是一個相對優化不錯的配置。
㈥ 怎樣使用 nginx 壓縮html
gzip 是在 Linux 系統中經常使用的一個對文件進行壓縮和解壓縮的命令,既方便又好用。
在Nginx安裝完成之後,我們可以開啟Gzip壓縮功能,這里Nginx默認只能對text/html類型的文件進行壓縮。
下面的指令為開啟Gzip的指令:
#啟用gzip壓縮功能
gzipon;
#默認值是1.1,就是說對HTTP/1.1協議的請求才會進行gzip壓縮
gzip_http_version1.1;
gzip_varyon;
#壓縮級別,1壓縮比最小處理速度最快,9壓縮比最大但處理最慢,同時也最消耗CPU,一般設置為3就可以了
gzip_comp_level6;
#nginx做前端代理時啟用該選項,表示無論後端伺服器的headers頭返回什麼信息,都無條件啟用壓縮
gzip_proxiedany;
#什麼類型的頁面或文檔啟用壓縮
gzip_typestext/plaintext/cssapplication/jsonapplication/x-javascripttext/xmlapplication/xmlapplication/xml+rsstext/javascriptimage/jpegimage/gifimage/png;
#最小壓縮的頁面,如果頁面過於小,可能會越壓越大,這里規定大於1K的頁面才啟用壓縮
gzip_min_length1024;
#設置系統獲取幾個單位的緩存用於存儲gzip的壓縮結果數據流
gzip_buffers168k;
#禁用IE6的gzip壓縮
gzip_disable"MSIE[1-6].(?!.*SV1)";
相關配置說明:
1、在gzip_http_version的默認值是1.1,就是說對HTTP/1.1協議的請求才會進行gzip壓縮。
如果使用了proxy_pass進行反向代理,那麼nginx和後端的upstream server之間是用HTTP/1.0協議通信的,如果使用nginx通過反向代理做Cache Server,前端的nginx沒有開啟gzip,且後端的nginx上未設置gzip_http_version為1.0,那麼Cache的url將不會被gzip壓縮。
2、gzip_disable的設置是禁用IE6的gzip壓縮
IE6的某些版本對gzip的壓縮支持不是很好,會造成頁面的假死。對img進行gzip後會造成IE6的假死,把對img的gzip壓縮去掉後就正常了。為了確保其它的IE6版本不出問題,所以加上了gzip_disable配置項。
3、gzip_min_length設置允許壓縮的頁面最小位元組數,頁面位元組數從header頭中的Content-Length中進行獲取。
默認值是0,不管頁面多大都壓縮。建議設置成大於1k的位元組數,小於1k可能會越壓越大。 即: gzip_min_length 1024。
㈦ 請教Nginx 中對 application/json 格式進行 gzip 壓縮無效的問題
默認情況下,開啟gzip不會對application/json類型的響應做壓縮處理,需要通過以下指令使nginx對application/json格式進行gzip壓縮:
gzipon;
gzip_typesapplication/jsonapplication/javascripttext/cssimage/svg+xml;
㈧ Nginx 配置靜態壓縮(ngx_http_gzip_static_mole)
Nginx提供靜態壓縮功能,對於比較大的文件,可以自動默認查找.gz後綴的壓縮包。減小項目工程的大小。
對於支持gzip的請求反向代理緩存伺服器將返回gzip內容,不支持gzip的客戶端返回原始內容。
㈨ 如何在Nginx伺服器中啟用Gzip壓縮
gzip指令可以開啟或關閉gzip:
gzip on;#開啟gzip
默認只對MIME為text/html進行gzip
可以通過gzip_types指令指定gzip的MIME類型:
gzip_types application/javascript application/json;#開啟其他MIME類型的GZIP功能