SpringBoot使用GZIP壓縮反回?cái)?shù)據(jù)問(wèn)題
SpringBoot使用GZIP壓縮反回?cái)?shù)據(jù)
1、初識(shí)gzip
第一次看到或者說(shuō)注意到gzip的時(shí)候是在做數(shù)據(jù)爬蟲(chóng)的時(shí)候,需要爬取第三方網(wǎng)站的圖片,開(kāi)始寫(xiě)的爬蟲(chóng)有問(wèn)題,爬到的圖片都不能展示,當(dāng)然跟這個(gè)gzip壓縮沒(méi)關(guān)系,但是當(dāng)時(shí)以為是這個(gè)東西再作祟,就看了下相關(guān)的資料。
2、gzip是什么,可以干什么?
gzip是一種壓縮方式,就是對(duì)數(shù)據(jù)進(jìn)行壓縮,使其變得更小,節(jié)省硬盤資源。
主要是用來(lái)壓縮數(shù)據(jù)的算法,具體實(shí)現(xiàn)這里略過(guò)。
3、SpringBoot(server)使用gzip壓縮
我們的boot應(yīng)用使用gzip壓縮的話,意思就是說(shuō)在傳輸?shù)臅r(shí)候?qū)?shù)據(jù)進(jìn)行格gzip編碼,瀏覽器自己會(huì)對(duì)接收到的數(shù)據(jù)進(jìn)行解碼。
所以我們?cè)赽oot應(yīng)用中使用這個(gè)gzip的目的就是為了減少中間過(guò)程流量的傳輸,縮短數(shù)據(jù)交互的時(shí)間。
4、在什么情況下使用gzip然后Http傳輸數(shù)據(jù)
我的策略是當(dāng)數(shù)據(jù)大于1kb時(shí),我在使用該方式進(jìn)行傳輸,當(dāng)數(shù)據(jù)比較小的時(shí)候使用gzip的話成本比較大,本來(lái)數(shù)據(jù)量不大,有的壓縮可能比不壓縮還大,所以沒(méi)有意義。
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ù)暮锰?火狐瀏覽器)
打開(kāi)瀏覽器,按F12進(jìn)入開(kāi)發(fā)者模式,然后點(diǎn)擊網(wǎng)絡(luò),然后訪問(wèn)自己的Boot應(yīng)用。

傳輸?shù)膬?nèi)容大小縮小了,這樣的話就是說(shuō)傳輸所需的流量肯定會(huì)俠少,頁(yè)面加載速度可能會(huì)變快,當(dāng)加載的數(shù)據(jù)量達(dá)到一定程度時(shí)可以看出來(lái),這里測(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)資源的,不過(guò)個(gè)人感覺(jué)這么大(不算大)的數(shù)據(jù)進(jìn)行壓縮對(duì)CPU來(lái)說(shuō)不過(guò)是秒秒鐘的事情。
8、Http傳輸中Server的選擇
可以在nginx層處理,也可以在tomcat層處理,看自己的需求,但是兩個(gè)都進(jìn)行處理的話結(jié)果可能會(huì)出現(xiàn)問(wèn)題。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):稀疏數(shù)組
今天帶大家了解一下Java稀疏數(shù)組的相關(guān)知識(shí),文中有非常詳細(xì)的介紹及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下2021-08-08
SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源連接和切換的完整方案
在 Spring Boot 中實(shí)現(xiàn)多數(shù)據(jù)源連接和切換,可以通過(guò)以下幾種方案來(lái)實(shí)現(xiàn),具體取決于項(xiàng)目的需求、數(shù)據(jù)庫(kù)的使用模式和管理的復(fù)雜性,大家可以根據(jù)需要進(jìn)行選擇2025-11-11
Java Web項(xiàng)目中實(shí)現(xiàn)文件下載功能的實(shí)例教程
這篇文章主要介紹了Java Web項(xiàng)目中實(shí)現(xiàn)文件下載功能的實(shí)例教程,分別講解了通過(guò)超鏈接實(shí)現(xiàn)下載以及通過(guò)Servlet程序?qū)崿F(xiàn)下載的方式,需要的朋友可以參考下2016-05-05
簡(jiǎn)單實(shí)現(xiàn)java抽獎(jiǎng)系統(tǒng)
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)java抽獎(jiǎng)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
SpringBoot使用RestTemplate如何通過(guò)http請(qǐng)求將文件下載到本地
文章介紹了如何通過(guò)編寫(xiě)代碼批量下載文件,解決了沒(méi)有提供批量下載接口的問(wèn)題,首先篩選出需要下載的文件ID,然后通過(guò)后端代碼發(fā)起HTTP請(qǐng)求,將下載的資源寫(xiě)入本地文件中,總結(jié)了實(shí)現(xiàn)方式和注意事項(xiàng),希望能為類似任務(wù)提供參考2025-02-02
Spring Security 自定義資源服務(wù)器實(shí)踐過(guò)程
這篇文章主要介紹了Spring Security 自定義資源服務(wù)器實(shí)踐,我們通過(guò)自己搭建的授權(quán)服務(wù)器和資源服務(wù)器,完整體驗(yàn)了OAuth2流程,需要的朋友可以參考下2022-08-08
Spring Boot 2.x中Actuator的一些知識(shí)點(diǎn)
這篇文章主要給大家介紹了關(guān)于Spring Boot 2.x中Actuator的一些知識(shí)點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot 2.x具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Hadoop源碼分析六啟動(dòng)文件namenode原理詳解
本篇是Hadoop源碼分析系列文章第六篇,主要介紹Hadoop中的啟動(dòng)文件namenode,后續(xù)本系列文章會(huì)持續(xù)更新,有需要的朋友可以借鑒參考下2021-09-09
在MyBatis中進(jìn)行分頁(yè)查詢的兩種方法詳解
在 MyBatis 中進(jìn)行分頁(yè)查詢通常有兩種方法:一種是通過(guò)手動(dòng)拼接 LIMIT 和 OFFSET,另一種是使用 MyBatis 插件(如 MyBatis-PageHelper)來(lái)自動(dòng)處理分頁(yè)邏輯,下面分別介紹這兩種方法,需要的朋友可以參考下2025-11-11
SpringCloud OpenFeign基本介紹與實(shí)現(xiàn)示例
OpenFeign源于Netflix的Feign,是http通信的客戶端。屏蔽了網(wǎng)絡(luò)通信的細(xì)節(jié),直接面向接口的方式開(kāi)發(fā),讓開(kāi)發(fā)者感知不到網(wǎng)絡(luò)通信細(xì)節(jié)。所有遠(yuǎn)程調(diào)用,都像調(diào)用本地方法一樣完成2023-02-02

