SpringBoot中開啟GZIP壓縮的方式
前言
首先GZIP壓縮有哪些好處了解一下先:
- 1.減小響應體大小
- 2.提升頁面的加載速度
- 3.節(jié)省帶寬成本
- 4.優(yōu)化移動端的體驗(主要是一般在移動端設備上,網(wǎng)絡帶寬通常是比較慢的,啟用可以有效提升速度)
- 5.更有效的緩存利用
- 6.改善SEO搜索引擎優(yōu)化
開啟GZIP壓縮方式
第一種
server: compression: enabled: true min-response-size: 1024 # 只有響應體大于 1KB 時才壓縮 mime-types: # 下面的是響應體的格式是這些的時候會壓縮 - application/json - application/xml - text/html - text/plain - text/css - application/javascript
- 未開啟GZIP的響應頭
- 開啟GZIP后的響應頭
這里可能你目前響應體返回的內(nèi)容短的時候你看不出來,但是一旦響應較長的內(nèi)容,你就能看到響應時間和渲染時間明顯的加速
第二種
如果你想進行更精細的控制,可以通過編程的方式來啟用和配置 GZIP 壓縮。
例如,使用 WebMvcConfigurer
來自定義壓縮策略:
import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Bean public ServletRegistrationBean<Filter> compressionFilter() { // 可以自定義壓縮邏輯的 Filter(可選) Filter compressionFilter = new GzipFilter(); ServletRegistrationBean<Filter> registrationBean = new ServletRegistrationBean<>(compressionFilter); registrationBean.addUrlPatterns("/api/*"); // 指定哪些 URL 需要壓縮 return registrationBean; } }
第三種
盡管 Spring Boot 可以在應用層進行 GZIP 壓縮,通常在生產(chǎn)環(huán)境中使用 Nginx 或 Apache 等反向代理服務器進行 GZIP 壓縮更為高效,因為反向代理通常比應用服務器更擅長處理靜態(tài)內(nèi)容的壓縮。
http { gzip on; gzip_types application/json application/xml text/html text/plain text/css application/javascript; gzip_min_length 1024; }
總結
- 默認情況下,Spring Boot 不啟用 GZIP 壓縮。
- 你可以通過在
application.properties
或application.yml
中配置來啟用它。 - 啟用 GZIP 后,只有當響應體的大小大于指定的
min-response-size
時,才會進行壓縮,默認值是 2048 字節(jié)(2 KB)。
強調(diào)開啟GZIP的好處有哪些?
1.減小響應體大小
- 壓縮數(shù)據(jù):GZIP 壓縮能夠顯著減小響應體的大小,尤其是對于 JSON、HTML、CSS、JavaScript 等文本格式的數(shù)據(jù)。通常,文本數(shù)據(jù)能被壓縮到原來的 20% 到 30% 左右,甚至更多,這有助于節(jié)省帶寬。
- 減少數(shù)據(jù)傳輸:壓縮后的數(shù)據(jù)更小,意味著從服務器到客戶端傳輸?shù)臄?shù)據(jù)量減少,這對于網(wǎng)絡帶寬有限的環(huán)境尤其重要。
2. 提升頁面加載速度
- 更快的加載速度:響應體變小后,傳輸時間減少,客戶端(如瀏覽器)能夠更快地獲取到數(shù)據(jù),從而加快頁面渲染或 API 請求的響應速度。
- 改善用戶體驗:壓縮后的響應能夠減少頁面加載時間,提升用戶體驗,尤其是在移動端或網(wǎng)絡條件不佳的環(huán)境中。
3. 節(jié)省帶寬成本
- 降低帶寬消耗:對于需要處理大量請求的服務器,GZIP 壓縮能夠有效減少帶寬消耗,從而減少服務器的帶寬成本。
- 適應大流量應用:在高并發(fā)的情況下,壓縮能夠緩解帶寬壓力,提高服務的可伸縮性。
4. 優(yōu)化移動端體驗
- 改善移動網(wǎng)絡條件下的性能:在移動設備上,網(wǎng)絡帶寬通常較慢,啟用 GZIP 壓縮可以顯著提升應用在 3G/4G 等不穩(wěn)定網(wǎng)絡環(huán)境下的響應速度。
- 減少流量使用:移動設備的流量通常有限,壓縮后的響應能夠減少流量消耗,有利于用戶節(jié)省流量。
5. 更有效的緩存利用
- 優(yōu)化緩存策略:在某些場景下,壓縮后的響應體能更好地適應 HTTP 緩存機制。尤其是通過緩存代理(如 CDN 或緩存服務器)時,壓縮響應能幫助緩存內(nèi)容更有效地傳輸并存儲。
- Vary 頭部支持:如果使用
Vary
頭部來處理不同的請求,例如,響應的內(nèi)容可能會因客戶端的Accept-Encoding
請求頭而有所不同。啟用 GZIP 后,緩存代理可以更精確地緩存不同版本的響應。
6. 減少服務器負擔
- 減輕應用服務器壓力:雖然壓縮會增加服務器端的 CPU 負擔(因為需要對響應體進行壓縮),但它能夠通過減小傳輸數(shù)據(jù)量來減少帶寬壓力,特別是在高流量的場景下,服務器的網(wǎng)絡帶寬瓶頸可能比 CPU 成為瓶頸更早,從而間接優(yōu)化了服務器性能。
- 適用于大流量應用:對于高并發(fā)、大流量的應用,GZIP 壓縮可以幫助有效降低帶寬需求,從而提高整體服務的性能和穩(wěn)定性。
7. 改善 SEO 和 Google PageSpeed
- 優(yōu)化 SEO(搜索引擎優(yōu)化):雖然 GZIP 壓縮本身并不會直接影響 SEO,但壓縮可以加速網(wǎng)頁加載時間,搜索引擎(如 Google)通常會將加載速度作為排名的一項指標。因此,啟用 GZIP 壓縮可能間接地幫助提高網(wǎng)站的 SEO 排名。
- 提升 Google PageSpeed:Google PageSpeed 工具通常建議開啟壓縮,以提高頁面性能評分。啟用 GZIP 壓縮有助于提升 PageSpeed 評分,優(yōu)化用戶體驗。
8. 支持現(xiàn)代瀏覽器的自動解壓縮
- 瀏覽器支持:現(xiàn)代瀏覽器(如 Chrome、Firefox、Safari 等)都支持 GZIP 解壓縮??蛻舳嗽谑盏綁嚎s的響應后,瀏覽器會自動進行解壓并呈現(xiàn)數(shù)據(jù),不需要前端開發(fā)者額外處理。
- 無需手動解壓:對于客戶端來說,GZIP 解壓縮是自動的,不需要開發(fā)者介入,簡化了開發(fā)工作。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Kafka消費客戶端協(xié)調(diào)器GroupCoordinator詳解
這篇文章主要為大家介紹了Kafka消費客戶端協(xié)調(diào)器GroupCoordinator使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10SpringBoot集成validation校驗參數(shù)遇到的坑
這篇文章主要介紹了SpringBoot集成validation校驗參數(shù)遇到的坑,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Spring Security OAuth2集成短信驗證碼登錄以及第三方登錄
這篇文章主要介紹了Spring Security OAuth2集成短信驗證碼登錄以及第三方登錄,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04