springboot压缩http响应数据

最近所负责项目响应时间有些长,需求方要求进行优化,原因某个请求返回的数据量非常大,大于1M,导致响应时间变长,由此开启响应数据的压缩,加快数据量多的接口的响应速度。

  1. 程序返回的数据量越大,占用的网络带宽也就越大,响应的时间也就越长,此时对响应数据进行压缩是个不错的优化方式。
  2. 浏览器默认是支持数据压缩的,会自动对 gzip 压缩的数据进行解压,F12 打开网络,可以看到请求头中会有: 'Accept-Encoding: gzip, deflate, br'。
  3. 对响应数据开启压缩的最常见的方式有:1)使用 Nginx 配置,2)Spring boot 应用配置(本文介绍此种方式)。
  4. Jetty、Tomcat 和 Undertow 都支持 HTTP 响应压缩,对于内嵌的 Servlet 容器而言,直接在 application.properties、application.yml 中配置即可
server:
  #如果是微服务环境,所有请求需要通过网关转发和返回时,则以下配置需要配置在网关上,而不是目标微服务上
  compression:
	#是否对响应数据开启gzip压缩,默认false
	enabled: true
	#响应内容长度超过设置大小时进行压缩,默认值为2048(2KB,不带单位时默认为字节)
	min-response-size: 10KB
	#对指定的响应类型进行压缩,值是数组,用逗号隔开
	mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml
  1. 默认情况下,要执行压缩,响应的长度至少为 2048 字节,可以通过 server.compression.min-response-size 属性配置。

  2. 默认情况下,仅当响应的内容类型为以下内容之一时,才会对其进行压缩,可以通过 mime-types 属性配置:text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml

  3. 如果服务消费端的 CPU 资源比较紧张的话,建议不要开启数据的压缩功能,因为数据压缩和解压都需要消耗 CPU 的资源,这样反而会给 CPU 增加了额外的负担,也会导致系统性能降低。