Tomcat 启动GZIP 压缩

来源:互联网 发布:手机论坛软件 编辑:程序博客网 时间:2024/05/16 10:46

【1. GZIP 压缩简介】

     1. HTTP 协议支持GZIP 压缩机制,也称协议压缩。 HTTP GZIP压缩是由WEB服务器和浏览器共同遵守的协议,也就是说WEB服务器和浏览器都必须遵守。目前主流的服务器和浏览器都支持GZIP压缩技术。

     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请求,如果请求头中携带Accept-Encoding gzip,deflate ,再看响应内容的类型是否满足服务器配置的需要压缩的类型,如果符合,那么WEB服务器在传输响应内容之前,会对响应内容进行压缩,并在响应头中添加Content-Encoding gzip;如果不符合,那么将不压缩,直接返回。

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


【2. Tomcat 启动GZIP 压缩机制】

    打开tomcat 安装路径,打开conf 目录下的server.xml 文件,进行如下修改

<Connector connectionTimeout="20000" port="8888" protocol="HTTP/1.1"redirectPort="8443" compression="on" compressionMinSize="1"compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain" />
      compression="on" 打开压缩功能
      compressionMinSize="2048" 启用压缩的输出内容大小,这里面默认为2KB
      noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩(不填表示对所有都是用)
      compressableMimeType="text/html,text/xml" 压缩类型(默认为text/html,text/xml,text/plain)

【3. 测试】

    1. 新建一 WEB应用, 然后创建一Servlet

package org.zgf.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/testHttp")public class TestHttp extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//必须指定响应类型response.setHeader("Content-Type", "text/plain; charset=UTF-8");StringBuffer sb = new StringBuffer();for(int i=0; i<1000; i++){sb.append("hello,world! hello,java! ");}response.getWriter().write(sb.toString());}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

    2. 部署应用,启动服务器,在浏览器中访问。

         


【4. Eclipse 中对Tomcat设置GZIP压缩】

     Eclipse中新建一个Server时,会自动将Tomcat 的配置copy到工作空间中一份,而启动的时候会加载工作空间中的配置文件,所以修改Tomcat 安装包下的server.xml 是不生效的,需要修改Eclipse 工作空间中的server.xml 文件。

   


   由于浏览器是自动进行GZIP 解压缩的,所以直接在浏览器中看响应内容是看不出来是否进行了GZIP压缩的, 因此可以使用HttpClient 来进行访问。HttpClient 可以参考笔者的另一篇博客。

0 0
原创粉丝点击