忘记是第几次读《高性能网站建设指南》的“规则4──压缩组件”一章了,之前一直搞得浑浑噩噩,今天才恍然有所觉悟,原来通过减小HTTP响应大小来减少响应时间应用到tomcat服务器上是这么一回事,结果令人欣慰万分,同时令我感到羞愧。gzip压缩率高达70%左右,这对于提升web性能来说简直就是逆天的表现,而今天之前的我,却不曾知晓!想必很多大牛都已经不屑于整理这样的资料,然而对于我来说,“像张白纸,爱情才刚刚开始,我要写的字太多!”
一、效果展示
对于js、css、html三种常用的类型,压缩率高的让人欣喜。拿html来说,47.49KB的大小gzip后为5.32KB,显然会大幅度提升网络的传输速度,当然,相对于没有进行gzip的工程来说,使用gzip要增加服务器压缩的压力(cpu消耗)、客户端解压缩的压力,具体消耗性能的提升和消耗之间的“能量转换比”有多少,我暂时无法得知,不过你如果感兴趣的话,可以看看主流网站(百度)是否采用了gzip。
二、如何使用gzip
gzip工作的原理很简单,通过http请求header增加一个“Accept-Encoding:gzip”指令来告知服务器需要进行gzip压缩,而服务器接收到该请求后,通过“Content-Encoding:gzip”来告知客户端进行gzip解压。
gzip请求指令的发送似乎(这一点,我还没有搞清楚)是默认的,打开火狐的firebug进行观察,可以看到请求的header中均包含了“Accept-Encoding:gzip, deflate(没有gzip高效,且不流行的压缩)”的指令。
请求不需要设置,但相应是要经过设置的,对于tomcat服务器,找到的方法如下:
<Connector executor="tomcatThreadPool"
port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"/>
在tomcat的server.xml中对connector进行如上配置:
-
compression="on"
开启压缩 -
compressionMinSize="2048"
大于2KB的文件才进行压缩(《高性能网站建设指南》建议1KB或者2KB以上,原因不得而知) -
noCompressionUserAgents="gozilla, traviata"
,对于这两种浏览器,不进行压缩(我也不知道这两种浏览器是啥,百度上没找到) -
compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"
表明支持html、xml、js、css、json等文件格式的压缩(plain为无格式的,但对于具体是什么,我比较概念模糊)。
然后重启tomcat。
三、到底有没有开启gzip
目前我知道的,有两种做法:
- java代码测试(没有外网权限时,可用。TGZIP.java(详细参照启用Tomcat6的隐藏Gzip压缩功能),注意需要引入apache的commons包!)。
- http://gzip.zzbaike.com/,文章开始的图片就来自于这个网站(无外网权限的,不可用,该种做法无需介绍了)。
四、cache-control
《高性能网站建设指南》的“规则4──压缩组件”一章中最后,还提到了“边缘情形”的一些问题(具体问题就我就不罗嗦了),解决办法之一是
Cache-Control: private头来禁用代理缓存。
喏,来看看怎么设置吧(来源于stackoverflow)!
①、CacheControlFilter.java
package com.honzh.common.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
public class CacheControlFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
HttpServletResponse resp = (HttpServletResponse) response;
// resp.setHeader("Expires", "Tue, 03 Jul 2001 06:00:00 GMT");
// resp.setDateHeader("Last-Modified", new Date().getTime());
// resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0");
resp.setHeader("Cache-Control", "max-age=0, private");
// resp.setHeader("Pragma", "no-cache");
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
②、web.xml中增加以上filer。
<filter> <filter-name>cacheControlFilter</filter-name> <filter-class>com.honzh.common.filter.CacheControlFilter</filter-class> </filter> <filter-mapping> <filter-name>cacheControlFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
五、gzip和无gzip的请求区别
经过这样一个小动作的优化,来尽情享受web性能提升后的快感吧!
相关推荐
本文将深入探讨如何在Tomcat服务器上启用GZIP压缩以提高Web性能,并提供详细的过程图解。GZIP压缩是一种常见的HTTP协议支持的数据压缩机制,能够显著减少网络传输的数据量,从而加快网页加载速度,降低服务器带宽...
总的来说,正确配置Tomcat的gzip压缩可以大大提高Web应用的性能,尤其是在处理大量数据或者跨网络环境传输时。如果你遇到内外网传输效率低下的问题,启用gzip压缩可能是解决之道。但需要注意,虽然gzip压缩减少了...
【标题】:“Tomcat设置Gzip压缩”是一个关于在Apache Tomcat服务器上配置Gzip压缩以提高Web应用程序性能的主题。Gzip是一种广泛使用的数据压缩算法,它可以减少HTTP响应的大小,从而加快网页加载速度,降低网络带宽...
标题 "Tomcat GZIP源码" 指的是Apache Tomcat服务器中用于实现GZIP压缩功能的源代码。GZIP是一种广泛使用的数据压缩算法,它能够有效地减小HTTP响应的大小,从而提高网页加载速度,降低网络带宽的消耗。在Tomcat中,...
在Web应用中,开启gzip压缩功能能够显著减小数据传输量,从而加快网页加载速度,降低服务器带宽消耗。以下是对EhCache开启gzip压缩功能的详细说明。 首先,gzip是一种广泛使用的数据压缩算法,尤其在Web服务器中,...
【GZIP配置详解:Tomcat, Apache, IIS】 GZIP是一种广泛使用的数据压缩...总的来说,无论是在Tomcat、Apache还是IIS服务器上,启用GZIP压缩都是提升Web性能的有效手段,只需要根据各自服务器的配置方式进行适当调整。
4. **缓存与压缩**:开启GZIP压缩可减少传输大小,提高响应速度。同时,启用静态资源缓存,减少服务器压力。 五、安全配置 1. **访问控制**:通过`web.xml`的`<security-constraint>`标签,可以限制特定URL或整个...
本文将详细介绍如何在Tomcat服务器中开启GZIP压缩功能。 #### 1. GZIP压缩简介 GZIP是一种广泛使用的数据压缩格式,它使用Lempel-Ziv编码(LZ77)进行压缩。当服务器将数据发送给客户端时,如果浏览器支持GZIP压缩...
3. 保持系统更新,利用Tomcat新版本带来的性能提升。 总结,Tomcat性能优化涉及JVM、Tomcat配置、Web应用、代码质量以及监控等多个层面,需要结合实际业务场景进行综合考虑。只有全面了解并掌握这些优化策略,才能...
1. **服务器配置**:大多数现代Web服务器(如Apache Tomcat、Jetty、IBM WebSphere等)都支持配置gzip压缩。通过修改服务器配置文件(如Tomcat的`server.xml`),我们可以开启gzip压缩并设置相应的参数,如最小压缩...
**Apache Tomcat:Java Web服务器详解** Apache Tomcat是一款开源的、免费的Web应用程序服务器,专为运行基于Java Servlet和JavaServer Pages(JSP)技术的Web应用而设计。它是Java EE(Java Platform, Enterprise ...
为了提高Tomcat的性能,可以调整线程池大小、启用连接器优化、使用NIO而非BIO连接器、开启GZIP压缩、限制并发请求等。此外,合理配置JVM参数也至关重要。 7. **集群与负载均衡** Tomcat支持集群配置,通过复制...
《Tomcat与Java.Web开发技术详解》是一本深入解析Tomcat服务器和Java Web开发的教程。本书旨在帮助读者全面理解如何使用Tomcat作为Java Web应用的运行环境,并掌握相关的开发和部署技巧。以下是对该主题的详细阐述:...
3. 对于已经很小的请求或响应,压缩可能不会带来显著的性能提升,甚至可能导致额外的开销。 4. 需要确保服务器和客户端都支持所选择的压缩算法。 总的来说,通过在传输层上压缩WebService的请求和响应,我们可以...
标题"Tomcat与Java.Web开发技术详解_tomcatjava_"表明了本文档将深入探讨Tomcat服务器以及使用Java进行Web应用程序开发的相关技术。Java.Web开发主要涉及使用Java语言来构建动态、交互式的Web应用程序,而Tomcat是...
Tomcat服务器的gzip压缩功能是一种优化策略,旨在提高Web应用的性能,减少网络传输的数据量。HTTP压缩主要通过将服务器发送到客户端的资源(如HTML、CSS、JavaScript等)压缩后再传输,从而加快页面加载速度,减少...
**Tomcat性能调优**是Web服务器领域中的一个重要话题,特别是在处理高并发和大数据量的Web应用时。Tomcat作为一款流行的开源Java Servlet容器,其性能优化能够显著提升应用程序的响应速度和整体效率。以下是对Tomcat...