项目使用的是extjs作为前端框架,这样就需要加载大量的js文件,而且后台返回的数据也是json格式,我就想有没有一种能自动压缩json和js文件的方法,而且前端也能自动解压。这样就能大大减少页面的加载时间,提升用户体验。因为之前是自己手动压缩js文件,然后在web.xml里面配置一个filter,这样好是好,但是后台返回的json数据却不能压缩,而且不能达到一劳永逸的效果,每个需要压缩的文件都要手动压缩,我就在网上找有没有更好的解决办法,功夫不负有心人,终于找到了,只需要在tomcat的server.xml文件里添加一些配置项tomcat服务器就会自动压缩你指定的一些文件,而且经过测试IE浏览器也是支持的。代码如下:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" compression="on" compressionMinSize="8190" //默认大于8k的文件才压缩,因为服务器压缩也是需要耗费cpu的 noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,application/javascript,text/javascript,text/css,text/plain,application/json" />
其中:compression 是否开启自动压缩
noCompressionUserAgents 不压缩的文件格式
compressionMinSize 超过这个大小的文件才被压缩 byte
compressableMimeType 需要压缩的文件格式
经过测试压缩率挺高。
友情提醒,如果是Tomcat 6/7, (影响最新Tomcat 7.0.29)
需要在Connector里面加上:
useSendfile=”false”
否则大于大于48K的文件不会压缩。(Tomcat 的Bug)