`
darrenzhu
  • 浏览: 809788 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tomcat7启用gzip压缩

阅读更多
背景:HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人。

第一步:修改$tomcat_home$/conf/server.xml

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
修改为
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"   redirectPort="8443"         
     compression="on"
         compressionMinSize="2048"
         noCompressionUserAgents="gozilla, traviata"
         compressableMimeType="text/html,text/xml,text/plain,text/css,
         text/javascript,text/json,application/x-javascript,
         application/javascript,application/json"/>
注意要添加application/javascript,tomcat5用的可能是text/javascript,但tomcat7用的是application/javascript

第二步:用浏览器访问你重新部署的程序,打开开发者工具,进入Network面板,刷新页面,然后选择一个js文件点击,查看 Headers下面的Response Headers,里面会标明Encoding为gzip,那么恭喜你成功了。

以上是服务器自动帮你压缩文件,但如果文件比较大,你希望提前压缩后,到时候服务器自动读取你压缩的gzip文件而不是由服务器来压缩,怎么做呢?
第一步:实现filter类,让filter类来读取你压缩的gzip文件
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Logger;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GzipFilter implements Filter {

	private ServletContext ctx;
	private Logger logger = Logger.getLogger(GzipFilter.class.getName());
	private String contextPath;

	@Override
	public void destroy() {

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;
		String uri = req.getRequestURI();
		String accept = req.getHeader("Accept-Encoding");
		InputStream in = null;
		contextPath = ctx.getContextPath();
		uri = uri.substring(contextPath.length());
		if (accept != null && accept.contains("gzip") && (in = ctx.getResourceAsStream(uri + ".gz")) != null) {
			logger.info("start getting gzip file "+uri);
			ByteArrayOutputStream bout = new ByteArrayOutputStream();
			byte[] b = new byte[1024 * 8];
			int read = 0;
			while ((read = in.read(b)) >= 0) {
				bout.write(b, 0, read);
			}
			in.close();

			res.setHeader("Content-Encoding", "gzip");
			res.setContentType("application/javascript;charset=UTF-8");
			res.setContentLength(bout.size());

			ServletOutputStream out = res.getOutputStream();
			out.write(bout.toByteArray());
			out.flush();
			logger.info("finish getting gzip file "+uri);
			return;
		} else {   
			chain.doFilter(request, response);
		}
	}

	@Override
	public void init(FilterConfig config) throws ServletException {
		ctx = config.getServletContext();
	}

}



第二步:配置web.xml
添加如下片段即可
	<!-- read the precompressed gzip js file-->
	<filter>
		<filter-name>gzip</filter-name>
		<filter-class>GzipFilter</filter-class>
	</filter>
 
	<filter-mapping>
		<filter-name>gzip</filter-name>
		<url-pattern>*.js</url-pattern>
	</filter-mapping>

第三步:压缩你的js文件,比如a.js为a.js.gzip文件
第四步:用chrome验证是否成功
分享到:
评论

相关推荐

    开启TOMCAT6的GZIP压缩

    ### 开启TOMCAT6的GZIP压缩 #### 背景与意义 随着互联网的发展,用户对于网页加载速度的要求越来越高。为了提升用户体验并减轻网络带宽的压力,TOMCAT服务器可以通过启用GZIP压缩功能来优化数据传输。GZIP是一种...

    Tomcat下,使用gzip压缩数据

    在`&lt;Connector&gt;`标签内添加或修改以下参数来开启gzip压缩: 1. `compression="on"`:设置为"on"表示开启gzip压缩。如果设置为"off",则关闭压缩。此外,"force"选项强制压缩所有请求,包括非文本内容如图片。 2. `...

    tomcat设置gzip压缩共2页.pdf.zip

    3. **启用Gzip压缩**:在`&lt;Connector&gt;`标签内,添加`compression="on"`属性来开启Gzip压缩。同时,可以设置`compressionMinSize="2048"`,表示只有当响应体大小超过2048字节时才启动压缩,以避免对小文件的过度压缩...

    tomcat开启gzip

    本文将详细介绍如何在Tomcat服务器中开启GZIP压缩功能。 #### 1. GZIP压缩简介 GZIP是一种广泛使用的数据压缩格式,它使用Lempel-Ziv编码(LZ77)进行压缩。当服务器将数据发送给客户端时,如果浏览器支持GZIP压缩...

    设置tomcat启用gzip压缩的具体操作方法

    1. 打开压缩功能:在`&lt;Connector&gt;`节点中添加`compression="on"`,这表示开启gzip压缩。 2. 设置压缩阈值:通过`compressionMinSize`属性设定启用压缩的最小输出内容大小。例如,`compressionMinSize="50"`表示当...

    EhCache开启gzip压缩功能

    在Web应用中,开启gzip压缩功能能够显著减小数据传输量,从而加快网页加载速度,降低服务器带宽消耗。以下是对EhCache开启gzip压缩功能的详细说明。 首先,gzip是一种广泛使用的数据压缩算法,尤其在Web服务器中,...

    tomcat GZIP源码

    标题 "Tomcat GZIP源码" 指的是Apache Tomcat服务器中用于实现GZIP压缩功能的源代码。GZIP是一种广泛使用的数据压缩算法,它能够有效地减小HTTP响应的大小,从而提高网页加载速度,降低网络带宽的消耗。在Tomcat中,...

    Tomcat7中开启gzip压缩功能的配置方法

    对于Apache Tomcat这种广泛使用的Java Web应用服务器,Tomcat 7版本提供了内置的支持以开启gzip压缩功能,从而帮助用户优化其Web应用的性能。 在Tomcat 7服务器中开启gzip压缩功能,主要通过修改Tomcat的配置文件来...

    Tomcat多端口域名访问并配置开启gzip压缩方法

    本文主要讲解了如何在Tomcat中配置多端口域名访问,并且详细介绍了如何开启gzip压缩,以提高Web应用的性能和响应速度。 首先,我们要了解如何在Tomcat中配置不同的端口来访问同一域名。在Web服务器中,端口是用来...

    tomcat,apache,iis的GZIP配置

    在Tomcat中启用GZIP压缩非常简便。只需在`server.xml`的HTTP Connector配置中添加`compression`参数,并将其值设为`on`。例如: ```xml maxThreads="150" connectionTimeout="20000" redirectPort="8443" ...

    tomcat设置gzip压缩的原理及配置方法

    在Tomcat服务器中启用GZIP压缩功能,可以通过修改Tomcat的配置文件server.xml来实现。server.xml文件位于Tomcat的conf目录下,通常需要以管理员权限修改。为了启用压缩,需要在元素中设置一些特定的属性。 具体配置...

    Tomcat配置gzip压缩提高浏览网站的速度

    通过修改服务器配置文件,可以轻松开启gzip压缩功能,从而提升网站性能。在Tomcat 5.5.20版本中的server.xml配置文件中,可以找到标签,这是定义服务器端接受和处理HTTP请求的关键配置部分。通过在标签中添加特定的...

    GZIP压缩Tomcat并提升web性能过程图解

    这里,`compression="on"`开启GZIP压缩,`compressionMinSize="2048"`表示只有当响应内容大于2048字节时才会进行压缩。`noCompressionUserAgents`用于指定某些不支持GZIP的浏览器,如gozilla和traviata,不会对其...

    如何验证Tomcat Gzip配置是否生效的方法

    在Web服务器的配置优化中,启用Gzip压缩是一项重要的性能提升措施,它能显著减少网页的响应时间,提高用户体验。本文主要介绍在Apache Tomcat服务器上配置和验证Gzip压缩是否生效的方法。 首先需要了解Tomcat中关于...

    J2EE gzip压缩

    通过修改服务器配置文件(如Tomcat的`server.xml`),我们可以开启gzip压缩并设置相应的参数,如最小压缩大小、缓存大小等。例如,在Tomcat中,我们可以在`Connector`元素中添加`compressableMimeType`和`...

    Tomcat7.0 64位下载

    - **压缩输出**:开启GZIP压缩,减少网络传输的数据量。 - **缓存配置**:启用静态资源的缓存,减少服务器响应时间。 **6. 监控与日志** - **监控工具**:使用JMX(Java Management Extensions)工具如VisualVM或...

    Tomcat7优化1

    - **压缩HTTP响应**:开启GZIP压缩,减小传输的数据量,提高网络传输效率。 - **减少应用上下文加载时间**:通过预加载应用上下文,减少首次请求时的加载延迟。 - **优化Web应用代码**:减少不必要的计算和数据库...

Global site tag (gtag.js) - Google Analytics