设为首页 收藏本站
查看: 508|回复: 0

[经验分享] tomcat服务器开启gzip压缩功能

[复制链接]

尚未签到

发表于 2017-1-31 12:42:25 | 显示全部楼层 |阅读模式
  今晚才发现ckeditor又有新版本放出了,于是上官网下了下来,顺便点进它的官方demo页面逛了圈,demo加载还是一样的很快,比我博客上用的快多了,很好奇官方demo是不是也用那个260多k的ckeditor.js,于是打开firefox的firebug插件,通过其网络功能观察了下,显示ckeditor.js只有83K,但通过访问其链接把js下到本地,却还是267K,原来是在服务器压缩了!我知道服务器能把文本内容压缩后再推送到客户端,但还是没想到能压缩到这个程度。心动了,于是上网google了下,把我的服务器(用的是tomcat6.20)也开启了gzip压缩功能,其间也收集到一些资料,在这里跟大家共享之。
  一、关于gzip
gzip是一个网页领域的压缩标准,GNU Zip格式。它通过向客户端浏览器发送gzip格式的压缩格式(通常能达到50%的压缩率以上),然后客户端浏览器对接收到的压缩格式进行解压缩,以达到减少网页访问打开时间,优化网站性能的目的。。l- 本文来自http://spyrise.org/blog/ -Qzf。
  gzip压缩是很多服务器软件,如Apache,nginx,IIS等的标准配置。gzip更是绝大多数客户端浏览器支持的基本功能。b带CY- 本文来自http://spyrise.org/blog/ -带l#xnxSz。
  开启gzip功能,会占用一定服务器的CPU。同时gzip的对象是一些文本格式的文件,如html、htm、css、js等。大家用过WinZip或 WinRAR的话,对一个Word文档压缩不了多少,但对一些文本文件的压缩率应该很大的,一般能达到30%左右,zip优化网站就是这个原理。
  二. HTTP压缩工作原理
Web服务器处理HTTP压缩的工作原理如下:
  1. Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;
  2. 如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;
  3. 如果请求文件是HTML、CSS等静态文件,Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;
  4. 如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;
  5. 如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;
  6. 如果请求文件是动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。
  下面以2个图片来加深理解:
  1. 没使用gzip:
 
  2. 使用gzip后:
  
三、tomcat服务器开启gzip功能的方法
    tomcat5.0以后的版本是支持对输出内容进行gzip格式的压缩的。该功能默认是关闭的,如果需要启用该功能,我们需要修改tomcat的配置文件server.xml,修改的方法是在server.xml的节点
  
1  <connector connectiontimeout= "20000" port= "8080" protocol= "HTTP/1.1" redirectport= "8443" uriencoding= "UTF-8" ><connector connectiontimeout= "20000" port= "8080" protocol= "HTTP/1.1" redirectport= "8443" uriencoding= "UTF-8" ></connector></connector> 
  处加上属性:  compression="on"  ,即
  下面是跟gzip功能有关属性的说明:
     compression="on" 打开压缩功能
     compressionMinSize="2048"      // 启用压缩的输出内容大小,这里面默认为2KB
     noCompressionUserAgents="gozilla, traviata"                //  对于以下的浏览器,不启用压缩
     compressableMimeType="text/html,text/xml"                //压缩文本类型,多个用,隔开
  四、测试gzip压缩功能是否正确开启:
    测试的方法很简单,只要用firefox的firebug插件里的网络监控功能,看看下载js文件的体积是否有明显减少就知道了(测试前最好清下浏览器的缓存)。
   另外还可以用httpclient来写一个测试程序(以下内容摘自java自由人 ):
    一旦启用了这个压缩功能后,我们怎么来测试压缩是否有效呢?首先Tomcat是根据浏览器请求头中的accept-encoding来判断浏览器是否支持压缩功能,如果这个值包含有gzip,就表明浏览器支持gzip压缩内容的浏览,所以我们可以用httpclient来写一个这样的简单测试程序
  01  /** 
  02    * HTTP客户端测试类 
  03    * @author liudong 
  04    */ 
  05  public class HttpTester { 
  06   
  07    /** 
  08     * @param args 
  09     */ 
  10    public static void main(String[] args) throws Exception{ 
  11     HttpClient http = new HttpClient();  
  12     GetMethod get = new GetMethod( "http://www.dlog.cn/js/prototype.js " ); 
  13     try { 
  14      get.addRequestHeader( "accept-encoding" , "gzip,deflate" ); 
  15      get.addRequestHeader( "user-agent" , "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)" ); 
  16      int er = http.executeMethod(get); 
  17      if (er== 200 ){ 
  18       System.out.println(get.getResponseContentLength()); 
  19       String html = get.getResponseBodyAsString(); 
  20       System.out.println(html); 
  21       System.out.println(html.getBytes().length); 
  22      } 
  23     } finally { 
  24      get.releaseConnection(); 
  25     } 
  26    } 
  27  } 
  执行这个测试程序,看看它所输出的是什么内容,如果输出的是一些乱码,以及打印内容的长度远小于实际的长度,那么恭喜你,你的配置生效了,你会发现你网站的浏览速度比以前快多了。
  五、介绍一个在线gzip压缩网页的网站
   http://www.gidnetwork.com/tools/gzip-test.php ,大家在服务器使用gzip功能前,可以先使用这个网站把自己的页面进行gzip压缩,看能压缩多少,好有个感性的认识,用法很简单,输入要测试的页面,再点“check”按钮就OK了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-335741-1-1.html 上篇帖子: 通过HttpServletRequestWrapper解决Tomcat请求乱码问题 下篇帖子: Tomcat NIO源代码分析(一) -- Acceptor
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表