关于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 相关文章推荐
JS使用oumousemove和oumouseout动态改变图片显示的方法
Mar 31 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
Jun 23 Javascript
JS实现DIV容器赋值的方法
Dec 14 Javascript
如何用js实现鼠标向上滚动时浮动导航
Jul 18 Javascript
JavaScript中apply方法的应用技巧小结
Sep 29 Javascript
JavaScript重定向URL参数的两种方法小结
Oct 19 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
Dec 12 Javascript
15个非常实用的JavaScript代码片段
Dec 18 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
Dec 26 Javascript
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
Dec 04 Javascript
详解JavaScript中的执行上下文及调用堆栈
Apr 29 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
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
在python中用url_for构造URL的方法
2019/07/25 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
python time()的实例用法
2020/11/03 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
乡镇综治宣传月活动总结
2014/07/02 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
诚实守信主题班会
2015/08/13 职场文书
七年级作文之我的梦想
2019/10/16 职场文书