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

相關文章
相關標籤/搜索