关于JavaScript的gzip静态压缩方法

2008-06-27,星期五 | 分类:WEB | 标签: | 133 views

一个页面减少10KB对于一个小网站来说,算不上什么,但对于大型站点来说,累计起来却是一个很大的流量……gzip压缩是一个有效可行的方法,但需要Apache的支持(Apache与IIS共用一个端口解决方法)。
传统的JS压缩(删除注释,删除多余空格等)提供的压缩率有时还是不尽不意,幸亏现在的浏览器都支持压缩传输(通过设置http header的 Content-Encoding=gzip),可以通过服务器的配置(如apache)为你的js提供压缩传输,或是appfuse中使用的 GZipFilter使tomcat也提供这种能力
现在的问题是这种动态的压缩会导致CPU占用率过高,现在我想到的解决辨法是通过提供静态压缩(就是将js预先通过gzip.exe压缩好)
一.下面描述在tomcat中的应用
1. 将prototype.js通过gzip.exe压缩保存成prototype.gzjs 2.设置header,我编写了一个简单的 AddHeadersFilter来将所有以gzjs结尾的文件增加设置header Content-Encoding=gzip web.xml中的配置 全文阅读 »

Nginx下实现gzip静态文件压缩

2008-06-27,星期五 | 分类:WEB, 工作日志 | 标签: | 133 views

最近客户报怨公司网站首页打开速度太慢,实际情况是打开首页一大堆css和js文件确实严重影响访问速度,特别prototype.js这个文件,光它就有120多k,而自打开首页后,访问其它页面速度还不错,就是因为后面将这些css和js文件都缓存了,而不至于影响速度。
于是想到压缩这些文件,搜索资料,参考网上这篇<<关于JavaScript的gzip静态压缩方法>>,静态压缩文件输出,提升访问速度,现在就拿prototype.js开刀先。
我没有使用gzip.exe这个软件,而是使用了另外一款开源压缩软件7-zip,压缩档案格式使用Gzip,压缩等级为极限压缩,嘿嘿,够狠,其它选项为默认,经此压缩,乖乖,122kb的prototype.js压缩后只有27Kb,效率为88%,爽!
好,下面整到服务器上去,不过文件名由prototype.js.gz改为prototype.gzjs,修改链接,因为服务器是nginx+jboss架构,jboss处理动态页面,nginx处理静态文件,为了保证nginx和jboss都能访问正常,所以要在两个软件中都添加gzjs的header,jboss不用说,参考<<关于JavaScript的gzip静态压缩方法>>即可,nginx则要修改两处,在虚拟主机配置段中添加:

location ~* ^.+.gzjs$ {
add_header  Content-Encoding  gzip;
gzip off;
}

另外再修改nginx的mime文件,在application/x-javascript js;中添加gzjs

application/x-javascript              js gzjs;

修改完成之后重启jboss和nginx即可,现在打开网站,感觉速度快了很多,如果将站点中所有的css和js文件甚至大的html等静态文件都经此整一下,网站访问速度想必大有改观,下面就看有没有办批量压缩了,go…