--- title: Spring boot开启Gzip压缩 date: 2018-06-13 22:30:12 description: Spring boot开启Gzip压缩,优化接口速度 categories: [技术总结] tags: [Spring boot, Gzip, https] --- ## 优化场景 > 在优化接口时间的过程中,发现很多接口的`Content Download`时间较长,除了网络问题,就是接口请求的数据太大了,有的达到了几百kb。 控制返回参数收效甚微,这时开启gzip就非常有用了,可以压缩接口请求的数据,一般的`json`文本压缩比率很大,开启之后接口时间大幅下降! - Spring boot版本:`1.5.8.RELEASE` ### 启用步骤 Spring boot项目配置比较简单: ```properties server.compression.enabled=true ``` 默认只压缩超过2048字节的数据,修改`server.compression.min-response-size`的值可以设置该大小 默认情况下,只有在响应内容类型为以下内容时才会压缩响应: - `text/html` - `text/xml` - `text/plain` - `text/css` 我们的接口返回的是json数据,所以修改下面的配置: ```bash server.compression.mime-types=application/json ``` 这样Gzip就开启了! > **注意:** 老版本的`Spring boot`的启用配置和新版本的不同,我发现项目中原本是启用的,之后升级`Spring boot`版本时没有更新配置导致了未启用。所以`在更新框架版本时,要及时注意配置的变动,以防一些功能失效!` > 老版本的配置: ```properties server.tomcat.compression=on server.tomcat.compressableMimeTypes=application/json ``` ### 如何查看Gzip是否开启成功 Google浏览器打开F12,切换到NetWork下,右键表头选择Response Headers下的`Content-Encoding`,如果开启了Gzip,对应接口中的`Content-Encoding`中会有显示。 > **注意:** 在同时开启https和http的工程中,Gzip配置只对主端口生效! ### 启用后的效果 开启前:数据Size为511KB,右侧时间蓝色部分(Content Download)较长 开启前:数据Size为21.3KB,Content-Encoding中显示gzip,右侧时间蓝色部分消失 对比效果非常明显,接口时间由`1.03s`降到`164ms`,完美!