• http gzip压缩功能记录


    版权声明:本文为博主原创文章,转载请附上原文出处链接。

    本文链接:https://www.cnblogs.com/shaoshuai95928/articles/Tomcat.html

      最近在springboot项目中遇到一个问题,服务器返回给客户端的json数据量太大,查询效率慢,因此需要对返回结果进行压缩处理,以提高查询效率。通过资料查询,目前压缩功能以HTTP gzip压缩为常用的压缩方式,以这种方式配置之后,再次验证查询时,压缩效率达到将近原来的10倍,先记录Gzip压缩相关资料说明:

    ------------------------------------------------------------------------------

      1. HTTP 协议支持GZIP 压缩机制,也称协议压缩。 HTTP GZIP压缩是由WEB服务器和浏览器共同遵守的协议,也就是说WEB服务器和浏览器都必须遵守。目前主流的服务器和浏览器都支持GZIP压缩技术。包括 Chrome、IE、FireFox、Opera 等;服务器有 tomcat、Apache 和 IIS 等。

         2. GZIP 主要用来压缩html,css,javascript,等静态文本文件,也支持对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩。

         3. GZIP 压缩的比率通常在3~10 倍之间,这样可以大大节省服务器的网络带宽,大大提升浏览器的浏览速度。

         4. GZIP 是一种数据压缩格式,默认且目前仅使用deflate算法压缩data部分;deflate是一种压缩算法,是huffman编码的一种加强。

         5. 协议压缩就是依据HTTP协议进行压缩,不需要程序员进行压缩,解压编码,而是把压缩过程交给WEB服务器,将解压过程交给客户端。 如果客户端为支持GZIP压缩的浏览器,那么解压过程也不需要程序员参与,浏览器会按照一定的规则自动进行解压缩;如果客户端为HttpClient ,那么就需要手动进行GZIP解码了。

         6. 压缩过程:客户端发送http请求,如果请求头header中携带Accept-Encoding: gzip,deflate (现在的浏览器一般默认都是这样),那么浏览器的意思是:服务器需要进行GZIP压缩,再看响应内容的类型是否满足服务器配置的需要压缩的类型,如果符合,那么WEB服务器在传输响应内容之前,会对响应内容进行压缩,并在响应头中添加Content-Encoding gzip;如果不符合,那么将不压缩,直接返回。

         7. 解压过程:(浏览器)客户端接收到响应,如果响应头中包含Content-Encoding GZIP,那么浏览器会自动将响应内容进行GZIP解压缩,然后再呈现在页面上。如果不包含,那么将直接呈现在页面上。 

    ------------------------------------------------------------------------------

    以下就是开启http gzip压缩功能步骤总结:

    1、引入jar包,用于屏蔽springboot中的Tomcat

    <!-- 去除内嵌tomcat -->
          <exclusions>
            <exclusion>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
          </exclusions>
        </dependency>

    2、启动类继承SpringBootServletInitializer,重写configure方法

        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return super.configure(builder);
        }

    3、配置Tomcat服务器配置文件,在server.xml中进行开启压缩功能

    <Connector port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" 
    executor="tomcatThreadPool"
    URIEncoding="UTF-8"
    compression="on"
    compressionMinSize="2048"
    noCompressionUserAgents="gozilla,traviata"
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json"
    />

      参数说明:

      executor:配置线程池
      URIEncoding:请求编码方式
      compression:开启压缩
      compressionMinSize:指大于2048B(2kb)压缩才生效,默认是2048B
      noCompressionUserAgents:指哪些客户端发出的请求不压缩
      compressableMimeType:被压缩的Mime类型列表,支持html、xml、js、css、json等文件格式的压缩

    4、将项目打成war包放在Tomcat/webapps目录下

    注意访问时,需在端口后面加上项目名,而且SpringBoot项目的application.properties/application.yml中配置的端口将不生效,以启动的Tomcat中的端口进行访问。

    记录技术相关文章
  • 相关阅读:
    数组最值和两种排序
    整数翻转,99乘法表,百钱买百鸡
    运算符综合练习题
    五子棋实现体验其过程
    二维数组斜线扫描2(方法逻辑清晰)
    字符串链接练习题
    母串中有几个相同的子串
    递归求菲波拉契前N项的和
    [LeetCode] Mini Parser
    Linked List 小结
  • 原文地址:https://www.cnblogs.com/shaoshuai95928/p/Tomcat.html
Copyright © 2020-2023  润新知