SpringBoot使用GZIP壓縮反回?cái)?shù)據(jù)問題
SpringBoot使用GZIP壓縮反回?cái)?shù)據(jù)
1、初識(shí)gzip
第一次看到或者說注意到gzip的時(shí)候是在做數(shù)據(jù)爬蟲的時(shí)候,需要爬取第三方網(wǎng)站的圖片,開始寫的爬蟲有問題,爬到的圖片都不能展示,當(dāng)然跟這個(gè)gzip壓縮沒關(guān)系,但是當(dāng)時(shí)以為是這個(gè)東西再作祟,就看了下相關(guān)的資料。
2、gzip是什么,可以干什么?
gzip是一種壓縮方式,就是對(duì)數(shù)據(jù)進(jìn)行壓縮,使其變得更小,節(jié)省硬盤資源。
主要是用來壓縮數(shù)據(jù)的算法,具體實(shí)現(xiàn)這里略過。
3、SpringBoot(server)使用gzip壓縮
我們的boot應(yīng)用使用gzip壓縮的話,意思就是說在傳輸?shù)臅r(shí)候?qū)?shù)據(jù)進(jìn)行格gzip編碼,瀏覽器自己會(huì)對(duì)接收到的數(shù)據(jù)進(jìn)行解碼。
所以我們?cè)赽oot應(yīng)用中使用這個(gè)gzip的目的就是為了減少中間過程流量的傳輸,縮短數(shù)據(jù)交互的時(shí)間。
4、在什么情況下使用gzip然后Http傳輸數(shù)據(jù)
我的策略是當(dāng)數(shù)據(jù)大于1kb時(shí),我在使用該方式進(jìn)行傳輸,當(dāng)數(shù)據(jù)比較小的時(shí)候使用gzip的話成本比較大,本來數(shù)據(jù)量不大,有的壓縮可能比不壓縮還大,所以沒有意義。
5、SpringBoot(Tomcat)情況下
使用gzip進(jìn)行Http傳輸?shù)呐渲萌缦拢?/p>
yml配置如下:
compression: enabled: true min-response-size: 1024 mime-types: - image/png - image/jpeg - image/jpg - text/html - application/javascript - text/css - application/octet-stream - application/json
6、使用gzip進(jìn)行傳輸?shù)暮锰?火狐瀏覽器)
打開瀏覽器,按F12進(jìn)入開發(fā)者模式,然后點(diǎn)擊網(wǎng)絡(luò),然后訪問自己的Boot應(yīng)用。
傳輸?shù)膬?nèi)容大小縮小了,這樣的話就是說傳輸所需的流量肯定會(huì)俠少,頁面加載速度可能會(huì)變快,當(dāng)加載的數(shù)據(jù)量達(dá)到一定程度時(shí)可以看出來,這里測(cè)試的數(shù)據(jù)量比較小。
7、使用gzip的壞處
有利必然有弊端,這里數(shù)據(jù)量傳輸雖然是減少了,但是你需要知道的是這個(gè)server在反回?cái)?shù)據(jù)時(shí)對(duì)數(shù)據(jù)進(jìn)行g(shù)zip壓縮的時(shí)候肯定是耗費(fèi)資源的,瀏覽器解析的話肯定也是耗費(fèi)資源的,不過個(gè)人感覺這么大(不算大)的數(shù)據(jù)進(jìn)行壓縮對(duì)CPU來說不過是秒秒鐘的事情。
8、Http傳輸中Server的選擇
可以在nginx層處理,也可以在tomcat層處理,看自己的需求,但是兩個(gè)都進(jìn)行處理的話結(jié)果可能會(huì)出現(xiàn)問題。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Java中常用數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)類 Collection和Map
下面小編就為大家?guī)硪黄獪\談Java中常用數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)類 Collection和Map。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09詳解Maven profile配置管理及激活profile的幾種方式
這篇文章主要介紹了詳解Maven profile配置管理及激活profile的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Java微信公眾平臺(tái)開發(fā)(9) 關(guān)鍵字回復(fù)以及客服接口實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺(tái)開發(fā)第九步,關(guān)鍵字回復(fù)以及客服接口實(shí)現(xiàn),以及遇到該公眾號(hào)暫時(shí)無法提供服務(wù)的解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04Java遠(yuǎn)程調(diào)用組件Feign技術(shù)使用詳解
Feign是Netflix公司開發(fā)的一個(gè)聲明式的REST調(diào)用客戶端; Ribbon負(fù)載均衡、 Hystrⅸ服務(wù)熔斷是我們Spring Cloud中進(jìn)行微服務(wù)開發(fā)非?;A(chǔ)的組件,在使用的過程中我們也發(fā)現(xiàn)它們一般都是同時(shí)出現(xiàn)的,而且配置也都非常相似2022-11-11Java Benchmark 基準(zhǔn)測(cè)試的實(shí)例詳解
這篇文章主要介紹了Java Benchmark 基準(zhǔn)測(cè)試的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下2017-08-08