关于JavaScript的gzip静态压缩方法


Posted in Javascript onJanuary 05, 2007

一个页面减少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中的配置 

<filter>  
        <filter-name>AddHeaderFilter</filter-name>  
        <filter-class>  
            badqiu.web.filter.AddHeaderFilter  
        </filter-class>  
        <init-param>  
            <param-name>headers</param-name>  
            <param-value>Content-Encoding=gzip</param-value>  
        </init-param>  
    </filter>    <filter-mapping>  
        <filter-name>AddHeaderFilter</filter-name>  
        <url-pattern>*.gzjs</url-pattern>  
    </filter-mapping> 
测试prototype.js是否正常的代码
<html>    
<head>    
<!-- type="text/javascript"不可少,有些浏览器缺少这个不能运行,具体已经忘记了 -->    
<script src="prototype.gzjs" type="text/javascript"></script>    
</head>    
<body>    
    <input id="username" name="username" value="badqiu"/><br />    
    <input id="email" value="badqiu@gmail.com"/>    
<script>    
    <!-- 测试prototype的方法是否正常-->    
    alert($F('username'))     
</script>    
</body>    
</html> 

在Apache中可以直接通过在httpd.conf增加AddEncoding x-gzip .gzjs来映射.gzjs文件的header

二.压缩率 

prototype.js 1.5.0_rc0原始大小56KB,未经任何处理直接使用gzip压缩为12KB,总压缩率79% 
2. 通过js压缩工具压缩过的protytype.js为20KB,使用gzip压缩为10KB,总压缩率为83%
3. 实际项目中的多个js合并成的文件 439KB,直接通过gzip压缩为85KB,总压缩率81%

4. 439KB经过js压缩为165KB,再经过gzip压缩为65KB,总压缩率86%

基本上你都可以忽略js压缩工具的压缩率,直接使用gzip压缩
gzip下载地址 http://www.gzip.org

tomcat的压缩配置示例下载地址: http://www.blogjava.net/Files/badqiu/gziptest.rar

Javascript 相关文章推荐
一个javascript图片阅览组件
Nov 09 Javascript
再论Javascript的类继承
Mar 05 Javascript
JS删除数组元素的函数介绍
Mar 27 Javascript
js变换显示图片的实例
Apr 16 Javascript
七个很有意思的PHP函数
May 12 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
Sep 26 Javascript
node.js中的fs.lstat方法使用说明
Dec 16 Javascript
jQuery判断checkbox选中状态
May 12 Javascript
AngularJs Forms详解及简单示例
Sep 01 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
Nov 11 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
Dec 26 Javascript
使用zrender.js绘制体温单效果
Oct 31 Javascript
关于Javascript 的 prototype问题。
Jan 03 #Javascript
彻底搞懂JS无缝滚动代码
Jan 03 #Javascript
经典的解除许多网站无法复制文字的绝招
Dec 31 #Javascript
对象的类型:本地对象(1)
Dec 29 #Javascript
JavaScript高级程序设计
Dec 29 #Javascript
JavaScript 参考教程
Dec 29 #Javascript
js自带函数备忘 数组
Dec 29 #Javascript
You might like
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
关于JavaScript的单双引号嵌套问题
2017/08/20 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
Python错误处理操作示例
2018/07/18 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
语文教育专业应届生求职信
2013/11/23 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
九年级语文教学反思
2014/02/04 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
大学学风建设方案
2014/05/04 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
政府个人对照检查材料
2014/08/28 职场文书
检讨书格式
2015/01/23 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
vue使用element-ui按需引入
2022/05/20 Vue.js
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技