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


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

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

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

    tomcat作为servet容器+http server,自然是支持gzip压缩的,只是在embed版本下需要通过代码来配置。

    spring-boot内置的tomcat是embed版本,通过内置的autoconfig机制已经做了一些默认tomcat配置,但是对于一些不常用/高级的配置,spring-boot并没有提供入口。

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

    本次增加gzip压缩是为了解决客服部门的使用问题,虽然解决了问题但是治标不治本。

    只需在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/json

    二者配其一即可。

  • 相关阅读:
    学习shell script
    ubuntu11.10安装出现/cdrom问题以及不能格式成ext问题
    正则表达式
    认识与学习bash(2)
    UNIX网络编程 一个简单的时间获取客户程序
    HDU4522
    恢复引导
    认识与学习bash(1)
    文件格式化处理
    C++解析csv文件
  • 原文地址:https://www.cnblogs.com/sunny-miss/p/11807574.html
Copyright © 2020-2023  润新知