Spring boot开启Gzip压缩

优化场景

在优化接口时间的过程中,发现很多接口的Content Download时间较长,除了网络问题,就是接口请求的数据太大了,有的达到了几百kb。
控制返回参数收效甚微,这时开启gzip就非常有用了,可以压缩接口请求的数据,一般的json文本压缩比率很大,开启之后接口时间大幅下降!

  • Spring boot版本:1.5.8.RELEASE

启用步骤

Spring boot项目配置比较简单:

1
server.compression.enabled=true

默认只压缩超过2048字节的数据,修改server.compression.min-response-size的值可以设置该大小
默认情况下,只有在响应内容类型为以下内容时才会压缩响应:

  • text/html
  • text/xml
  • text/plain
  • text/css
    我们的接口返回的是json数据,所以修改下面的配置:
    1
    server.compression.mime-types=application/json
    这样Gzip就开启了!

    注意: 老版本的Spring boot的启用配置和新版本的不同,我发现项目中原本是启用的,之后升级Spring boot版本时没有更新配置导致了未启用。所以在更新框架版本时,要及时注意配置的变动,以防一些功能失效!
    老版本的配置:

    1
    2
    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,完美!

文章目录
  1. 1. 优化场景
    1. 1.1. 启用步骤
    2. 1.2. 如何查看Gzip是否开启成功
    3. 1.3. 启用后的效果