SpringBoot系列教程Web篇之開啟GZIP數據壓縮


本篇可以歸納在性能調優篇,雖然內容非常簡單,但效果可能出乎預料的好;

分享一個真實案例,我們的服務部署在海外,國內訪問時訪問服務時,響應有點誇張;某些返回數據比較大的接口,耗時在 600ms+上,然而我們的服務 rt 卻是在 20ms 以下,絕大部分的開銷都花在了網絡傳輸上

針對這樣的場景,除了買雲服務商的網絡通道之外,另外一個直觀的想法就是減少數據包的大小,直接在 nginx 層配置 gzip 壓縮是一個方案,本文主要介紹下,SpringBoot 如何開啟 gzip 壓縮

I. gizp 壓縮配置

1. 配置

SpringBoot 默認是不開啟 gzip 壓縮的,需要我們手動開啟,在配置文件中添加兩行

server:
  compression:
    enabled: true
    mime-types: application/json,application/xml,text/html,text/plain,text/css,application/x-javascript

注意下上面配置中的mime-types,在 spring2.0+的版本中,默認值如下,所以一般我們不需要特意添加這個配置

// org.springframework.boot.web.server.Compression#mimeTypes
/**
 * Comma-separated list of MIME types that should be compressed.
 */
private String[] mimeTypes = new String[] { "text/html", "text/xml", "text/plain",
		"text/css", "text/javascript", "application/javascript", "application/json",
		"application/xml" };

2. 測試

寫一個測試的 demo

@RestController
public class HelloRest {
    @GetMapping("bigReq")
    public String bigReqList() {
        List<String> result = new ArrayList<>(2048);
        for (int i = 0; i < 2048; i++) {
            result.add(UUID.randomUUID().toString());
        }
        return JSON.toJSONString(result);
    }
}

下面是開啟壓縮前后的數據報對比

3. 說明

雖然加上了上面的配置,開啟了 gzip 壓縮,但是需要注意並不是說所有的接口都會使用 gzip 壓縮,默認情況下,僅會壓縮 2048 字節以上的內容

如果我們需要修改這個值,通過修改配置即可

server:
  compression:
    min-response-size: 1024

II. 其他

0. 項目

web 系列博文

項目源碼

1. 一灰灰 Blog

盡信書則不如,以上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現 bug 或者有更好的建議,歡迎批評指正,不吝感激

下面一灰灰的個人博客,記錄所有學習和工作中的博文,歡迎大家前去逛逛

一灰灰blog


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM