zoukankan      html  css  js  c++  java
  • 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

    二者配其一即可。

  • 相关阅读:
    项目中看似很难的问题可能很简单
    ASP.NET数据列表“全选”,批量处理的JS实现
    [转]给网站增加如:flv,torrent等特殊后缀格式文件下载
    GD Graphics Library
    在VS2008中编译64位程序以及遇到的问题
    关于C#闭包
    SNMP协议介绍及SNMP library
    ASP.NET MVC 使用总结(二)——扩展HtmlHelper实现动态生成title及meta
    LINQ查询代码整理(一)
    使用方便的SDK帮助文档
  • 原文地址:https://www.cnblogs.com/sunny-miss/p/11807574.html
Copyright © 2011-2022 走看看