如何验证Tomcat Gzip配置是否生效的方法
我们在使用Tomcat优化配置时,都会开始Tomcat的Gzip压缩功能,配置如下:
即把以下内容加入到apache-tomcat-6\conf\server.xml中的connector标签中
参数说明:
compression="on"打开压缩功能
compressionMinSize="2048"启用压缩的输出内容大小,当被压缩对象的大小>=该值时才会被压缩,这里面默认为2KB
noCompressionUserAgents="gozilla,traviata"对于以下的浏览器,不启用压缩
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg"压缩类型
注意:tomcat7以后,js文件的mimetype类型变为了application/JavaScript,具体的tomcat7定义的类型可以在:conf/web.xml文件中找到。
我的Tomcat6所以还是text/javascript
Tomcat7js文件的mimetype类型变为了application/javascript
自己注意配错了起不到压缩的作用哦
那么我们如何测试配置的Gzip压缩功能生效了呢?
答案就是:使用apacheHttpClient访问该tomcat加载项目中的一个静态资源(比如一个js文件),然后打印请求的资源内容或资源ContentLength,如果打印的资源内容为乱码或ContentLength为-1,则说明gzip生效了。
importorg.apache.commons.httpclient.HttpClient; importorg.apache.commons.httpclient.methods.GetMethod; /** *@ClassName: GzipTest.java *@Description: TODO(用一句话描述该文件做什么) * *@author Administrator *@E-mail 809044093@qq.com *@version V1.0 *@Date 2014-3-27上午09:07:00 */ publicclassGzipTest{ /** *@paramargs */ publicstaticvoidmain(String[]args)throwsException{ HttpClienthttp=newHttpClient(); GetMethodget=newGetMethod("http://127.0.0.1:9080/membercms/style/shop/js/base.js"); try{ get.addRequestHeader("accept-encoding","gzip,deflate"); get.addRequestHeader("user-agent","Mozilla/5.0(compatible;MSIE6.0;WindowsNT5.0;AlexaToolbar;Maxthon2.0)"); inter=http.executeMethod(get); if(er==200){ System.out.println(get.getResponseContentLength()); Stringhtml=get.getResponseBodyAsString(); System.out.println(html); System.out.println(html.getBytes().length); } }finally{ get.releaseConnection(); } } }
控制台结果为乱码
说明配置压缩网站的信息成功,此法可能对服务器cpu有些损耗。
Apache开启Gzip压缩配置:
去掉以下两个注释#
LoadModuledeflate_modulemodules/mod_deflate.so LoadModuleheaders_modulemodules/mod_headers.so
在httpd.conf最后加入
#apacheGzip#Insertfilter SetOutputFilterDEFLATE #Netscape4.xhassomeproblems... BrowserMatch^Mozilla/4gzip-only-text/html #Netscape4.06-4.08havesomemoreproblems BrowserMatch^Mozilla/4\.0[678]no-gzip #MSIEmasqueradesasNetscape,butitisfine BrowserMatch\bMSIE!no-gzip!gzip-only-text/html #Don'tcompressimages SetEnvIfNoCaseRequest_URI.(?:gif|jpe?g|png)$no-gzipdont-vary SetEnvIfNoCaseRequest_URI.(?:exe|t?gz|zip|bz2|sit|rar)$no-gzipdont-vary SetEnvIfNoCaseRequest_URI.(?:pdf|doc|avi|mov|mp3|rm)$no-gzipdont-vary AddOutputFilterByTypeDEFLATEtext/htmltext/plaintext/xmltext/csstext/js #Makesureproxiesdon'tdeliverthewrongcontent #HeaderappendVaryUser-Agentenv=!dont-vary
设置完成之后访问http://tool.chinaz.com/Gzips/输入你的网站域名检测压缩情况。