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

本文链接: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="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort=""
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中的端口进行访问。

http gzip压缩功能记录的更多相关文章

  1. Nginx -- Gzip 压缩功能作用

    1.对应的压缩参数说明# 开启gzip压缩功能gzip on; # 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取.默认值是0,不管页面多大都进行压缩,建 ...

  2. 开启Nginx的gzip压缩功能详解

    默认情况下,Nginx的gzip压缩是关闭的, gzip压缩功能就是可以让你节省不少带宽,但是会增加服务器CPU的开销哦,Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行 ...

  3. Nginx开启gzip压缩功能

    在Nginx安装完成之后,我们可以开启Gzip压缩功能,这里Nginx默认只能对text/html类型的文件进行压缩.下面的指令为开启Gzip的指令: gzip on; gzip_http_versi ...

  4. Java和.NET的GZIP压缩功能对比

    本文主要比较了Java和.NET提供的GZIP压缩功能. 介绍 在本文中,我们将讨论Java和.NET提供的GZIP压缩功能,并且用实例来说明哪个压缩方法更佳. 在Java中,我们有提供GZIP压缩的 ...

  5. PhpStudy如何开启Apache的gzip压缩功能?

    要让apache支持gzip功能,要用到deflate_Module和headers_Module. 打开apache的配置文件httpd.conf,大约在105行左右,找到以下两行内容:(这两行不是 ...

  6. nginx的gzip压缩功能

    我们在开发网站的时候,应该要考虑到pv,因为pv比较大可能会造成服务器带宽不够用,进而导致用户体验变差. 这个时候我们就可以考虑用nginx的gzip功能. 在nginx中开启gzip压缩功能很简单, ...

  7. Tomcat6启用Gzip压缩功能

    配置Tomcat根目录下/conf/server.xml文件: <Connector port="8080" protocol="HTTP/1.1" co ...

  8. php判断服务器是否支持Gzip压缩功能

    Gzip可以压缩网页大小从而达到加速打开网页的速度,目前主流的浏览器几乎都支持这个功能,但开启Gzip是需要服务器支持的,在这里我们简单的使用php来判断服务器是否支持Gzip功能. 新建一个php类 ...

  9. Apache httpd 2.4.27开启GZIP压缩功能

    转载自素文宅博客:https://blog.yoodb.com/yoodb/article/detail/1373 HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的文件压缩算法,现在的应 ...

随机推荐

  1. [Spring cloud 一步步实现广告系统] 14. 全量索引代码实现

    上一节我们实现了索引基本操作的类以及索引缓存工具类,本小节我们开始实现加载全量索引数据,在加载全量索引数据之前,我们需要先将数据库中的表数据导出到一份文件中.Let's code. 1.首先定义一个常 ...

  2. 常量Const

    常量Const YEAR = 2019 # 全部大写的变量名为常量 注释 给不能理解的写一个描述 便于理解 增强可读性 三种形式 单行(当行)注释:# 只注释一行 不能换行 注释的代码不执行 不使用 ...

  3. 编程杂谈——Non-breaking space

    近日,意外地遇上件不寻常的事情.在解析PDF文件,读取其中内容的时候,对某一文件的处理,始终无法达到预期的效果. 解析方法如下: public void Parse(string value) { i ...

  4. Linux之vim详解

    第一次使用vim,啥都不懂,输入也不能输入,退出也不会退出,特别的尴尬....后来慢慢的接触学习,发现vim真的挺好用的,不过上手有点慢,多用就对了,用多了我相信你也会喜欢这个文本编辑工具的 一.vi ...

  5. EXP查询合集提权后渗透必备

    0x00 整理的一些后渗透提权需要用到的一些漏洞,后渗透提权的时候可以看一下目标机那些补丁没打,再进行下一步渗透提权. 0x01 CVE-2019-0803 [An elevation of priv ...

  6. json操作与使用 小白

    json使用广可以和很多语言进行互换,把json序列化成字符串,可以反序列化回去 dumps(传入的类型,'ensure_ascii=False') loads网络传输 dump load文件写读 p ...

  7. GSS4&&花仔游历各国

    首先呢,我们想到一种数据结构可以区间开方,一看就不行,但是一看就算是10^18开六次方也只剩一,就不用开根了,所以可以想到用线段树或者分块水过,由于本人 不会用分块,只能用常数巨大的线段树 Code ...

  8. HBase 系列(六)——HBase Java API 的基本使用

    一.简述 截至到目前 (2019.04),HBase 有两个主要的版本,分别是 1.x 和 2.x ,两个版本的 Java API 有所不同,1.x 中某些方法在 2.x 中被标识为 @depreca ...

  9. 9407web常用符号

    常用符号 转载自 http://www.fhdq.net/ ❤❥웃유♋☮✌☏☢☠✔☑♚▲♪✈✞÷↑↓◆◇⊙■□△▽¿─│♥❣♂♀☿Ⓐ✍✉☣☤✘☒♛▼♫⌘☪≍←→◈◎☉★☆⊿※¡━┃♡ღツ☼☁❅♒✎©® ...

  10. wcf项目跨域问题处理

    最近做了一个wcf项目,请求发起的项目是一个webform项目,所以这是分开的两个项目端口必然不一样,理所当然存在跨域问题. 有的人当下就反应过来jsonp,jsonp只能用于get请求,对于参数比较 ...