为了减少数据在网络中的传输量,从而减少传输时长,增加用户体验,浏览器大都是支持Gzip压缩技术的,http的请求头 Accept-Encoding:gzip, deflate 就表示这次请求可以接受Gzip压缩后的数据,图片不要进行压缩,因为图片完全可以在项目开发中使用压缩后的图片。压缩会有一定的CPU性能损耗。
1、在 application.yml 中加入如下配置
server:
compression:
enabled: true
mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain
- 压缩后文件大概有5-8倍左右的差距,能大大减少网络传输量,页面加载速度加快。
- 其实这里最好放在统一网关里,这样就不需要每一个 SpringBoot 都去加这个配置。
2、Tomcat开启Gzip压缩
tomcat中使用gzip需要进行配置,在server.xml中,在Connector标签中加入如下属性
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/css,text/javascript"
3、下面我们对比一下未开启gzip压缩和开启gzip压缩的传输量
- 首先对于 Chrome 浏览器,自动请求加入了 gzip 信息(Request Headers里面可以看到前端已经支持了接受gzip压缩后的json)
- 未开启gzip压缩的截图,可以看到json大小为7.0MB
- 开启gzip压缩后的截图,可以看到json的大小压缩成了1.2MB 大概压缩了5.8倍
注意事项
- 需要用 GZIP 必须是 GET 请求,以后这中返回数据量大的接口,只要不涉及到敏感信息,务必使用GET请求,这样可以省好多事。