本篇可以歸納在性能調優篇,雖然內容非常簡單,但效果可能出乎預料的好;
分享一個真實案例,我們的服務部署在海外,國內訪問時訪問服務時,響應有點誇張;某些返回數據比較大的接口,耗時在 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 系列博文
- 191018-SpringBoot 系列教程 web 篇之過濾器 Filter 使用指南擴展篇
- 191016-SpringBoot 系列教程 web 篇之過濾器 Filter 使用指南
- 191012-SpringBoot 系列教程 web 篇之自定義異常處理 HandlerExceptionResolver
- 191010-SpringBoot 系列教程 web 篇之全局異常處理
- 190930-SpringBoot 系列教程 web 篇之 404、500 異常頁面配置
- 190929-SpringBoot 系列教程 web 篇之重定向
- 190913-SpringBoot 系列教程 web 篇之返回文本、網頁、圖片的操作姿勢
- 190905-SpringBoot 系列教程 web 篇之中文亂碼問題解決
- 190831-SpringBoot 系列教程 web 篇之如何自定義參數解析器
- 190828-SpringBoot 系列教程 web 篇之 Post 請求參數解析姿勢匯總
- 190824-SpringBoot 系列教程 web 篇之 Get 請求參數解析姿勢匯總
- 190822-SpringBoot 系列教程 web 篇之 Beetl 環境搭建
- 190820-SpringBoot 系列教程 web 篇之 Thymeleaf 環境搭建
- 190816-SpringBoot 系列教程 web 篇之 Freemaker 環境搭建
- 190421-SpringBoot 高級篇 WEB 之 websocket 的使用說明
- 190327-Spring-RestTemplate 之 urlencode 參數解析異常全程分析
- 190317-Spring MVC 之基於 java config 無 xml 配置的 web 應用構建
- 190316-Spring MVC 之基於 xml 配置的 web 應用構建
- 190213-SpringBoot 文件上傳異常之提示 The temporary upload location xxx is not valid
項目源碼
- 工程:https://github.com/liuyueyi/spring-boot-demo
- 項目:https://github.com/liuyueyi/spring-boot-demo/tree/master/spring-boot/210-web-filter
1. 一灰灰 Blog
盡信書則不如,以上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現 bug 或者有更好的建議,歡迎批評指正,不吝感激
下面一灰灰的個人博客,記錄所有學習和工作中的博文,歡迎大家前去逛逛
- 一灰灰 Blog 個人博客 https://blog.hhui.top
- 一灰灰 Blog-Spring 專題博客 http://spring.hhui.top