HTTP GZIP——压缩报文,节约带宽

报文压缩的使用场景:当数据大于1kb时,我在使用该方式进行传输,当数据比较小的时候使用gzip的话成本比较大,原本数据量不大,没有必要。算法

GZIP: 一种压缩算法,通常压缩比例大概在6-8之间spring

HTTP GZIP:Http协议中的gzip压缩算法,除了gzip外http协议里还支持一些其余的算法,好比compress/deflate。固然也能够定制本身的压缩算法,前提是客户端支持。
压缩的好处是能够节约带宽/流量,可是带来的代价是额外的cpu/内存资源消耗,不过在现在性能过剩的时代,这些远远没有带宽宝贵。json

tomcat做为servet容器+http server,天然是支持gzip压缩的,只是在embed版本下须要经过代码来配置。tomcat

spring-boot内置的tomcat是embed版本,经过内置的autoconfig机制已经作了一些默认tomcat配置,可是对于一些不经常使用/高级的配置,spring-boot并无提供入口。springboot

不过因为spring bean的特性,能够覆盖默认装配的bean,包括tomcat相关的配置。TomcatServletWebServerFactory是springboot2.0.2下对tomcat embed的配置封装,覆盖此bean便可实现动态配置(不要问我怎么知道这个类的,看源码……)app

本次增长gzip压缩是为了解决客服部门的使用问题,虽然解决了问题可是治标不治本。spring-boot

只需在WebAppConfigurer implements WebMvcConfigurer配置便可 @Bean public TomcatServletWebServerFactory tomcatServletWebServerFactory(){ TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory(); tomcatServletWebServerFactory.addConnectorCustomizers((connector)->{ ProtocolHandler protocolHandler = connector.getProtocolHandler(); if(protocolHandler instanceof Http11NioProtocol){ Http11NioProtocol http11NioProtocol = (Http11NioProtocol)protocolHandler; http11NioProtocol.setCompression("on");//default off
                http11NioProtocol.setCompressionMinSize(2048);//default 2048(B)
                http11NioProtocol.setMaxKeepAliveRequests(1);//default 200
 } }); return tomcatServletWebServerFactory; }

 

yml配置人以下性能

server:
  compression:
    enabled: true
    min-response-size: 1024
    mime-types:
       application/jsonspa

 

两者配其一便可。code

相关文章
相关标签/搜索