本篇能够概括在性能调优篇,虽然内容很是简单,但效果可能出乎预料的好;javascript
分享一个真实案例,咱们的服务部署在海外,国内访问时访问服务时,响应有点夸张;某些返回数据比较大的接口,耗时在 600ms+上,然而咱们的服务 rt 倒是在 20ms 如下,绝大部分的开销都花在了网络传输上css
针对这样的场景,除了买云服务商的网络通道以外,另一个直观的想法就是减小数据包的大小,直接在 nginx 层配置 gzip 压缩是一个方案,本文主要介绍下,SpringBoot 如何开启 gzip 压缩html
SpringBoot 默认是不开启 gzip 压缩的,须要咱们手动开启,在配置文件中添加两行java
server:
compression:
enabled: true
mime-types: application/json,application/xml,text/html,text/plain,text/css,application/x-javascript
复制代码
注意下上面配置中的mime-types
,在 spring2.0+的版本中,默认值以下,因此通常咱们不须要特地添加这个配置nginx
// 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" };
复制代码
写一个测试的 demogit
@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);
}
}
复制代码
下面是开启压缩先后的数据报对比github
虽然加上了上面的配置,开启了 gzip 压缩,可是须要注意并非说全部的接口都会使用 gzip 压缩,默认状况下,仅会压缩 2048 字节以上的内容web
若是咱们须要修改这个值,经过修改配置便可spring
server:
compression:
min-response-size: 1024
复制代码
尽信书则不如,以上内容,纯属一家之言,因我的能力有限,不免有疏漏和错误之处,如发现 bug 或者有更好的建议,欢迎批评指正,不吝感激json
下面一灰灰的我的博客,记录全部学习和工做中的博文,欢迎你们前去逛逛