[转]Javascript压缩工具
来源:互联网 发布:网络推广员岗位职责 编辑:程序博客网 时间:2024/05/22 00:06
原文地址:http://hi.baidu.com/duwuzhe722/blog/item/a5ba873801e35c32b9998ff9.html
当你提高了用户体验,做出了很绚丽的效果而欣喜的时候,是否想过优化一下JS的效率,比如微软的live,其中的js做了压缩处理。JS的速度分为两种,下载速度和执行速度。今天就先来说说下载速度。要想js的下载速度快,就需要尽量减小js文件的大小 1.这里我们可以使用一个工具ESC(ECMAScript cruncher)来帮我们完成这个工作,不过这个工具只能在Windows下使用。到http://www.saltstorm.net/depo/esc/introduction.wbm?pod=js下载ESC.zip,解压后看看它的帮助文档 2.一个小工具jsmin也可以压缩,不过没有ESC的level选项,看了一下好像压缩效果类似于ESC的level3.济南大学的一些老师写了个jsmin的图形界面程序JsMinGUI,使用起来更加方便。:-) Javascript compressed,Js压缩,javascript压缩,js压缩工具,js压缩合并,js文件压缩
Ps:对于一些压缩的代码,在阅读时可以用JavaScript Code Improver来进行格式化。看看它主页上的一个例子:
javascript压缩代码示例
原来的代码:
格式化后:
var I = 0, s = "", k = 0;
function foo()
{
for(j = 0; j < 10; j++)
{
for(I = 0; I < 10; i++)
{
s = "string1";
k = Math.floor( Math.random()*10 );
}
for(I = 20; I > 9; i--)
{
s = "string2";
k = I;
}
}
}
</script>
js压缩,巨NB的dHTML特效. 来自:
http://hometown.aol.de/_ht_a/memtronic/MemTronic_CruncherCompressor_v09g.html
JS压缩示例样本:JS压缩示例样本
更多的JS压缩器以及混淆器
http://dean.edwards.name/packer/ 在线Js压缩
A Online JavaScript Compressor/Obfuscator version 2.0.2
Also available as a .NET application
开源下载:http://dean.edwards.name/download/#packer
JS压缩器帮助:http://dean.edwards.name/packer/usage/
http://dean.edwards.name/packer/usage/sample.html
http://hometown.aol.de/_ht_a/memtronic/
JavaScript Compressor/Obfuscator Demo:
http://www.brainjar.com/js/crunch/demo.html
JavaScript Code Improver:
JavaScript Code Improver Download
前面提到的Javascript压缩,都是采用删除注释,删除多余空格,替换字符等方式进行的,还有一种通过服务器的配置来实现Js静态压缩的方法:
关于JavaScript的gzip静态压缩方法
传统的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-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是否正常的代码
<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中可以直接通过在httpd.conf增加AddEncoding x-gzip .gzjs来映射.gzjs文件的header
二.相关压缩率数据
1. 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
其主要是利用服务器自带的动态压缩功能 传输时压缩数据流.
一个是dojo shrinksafe( http://shrinksafe.dojotoolkit.org/ ),还有一个是yui compressor( http://developer.yahoo.com/yui/compressor/ ),感觉还不错。我压缩了一下prototype-1.6.0.js,源文件差不多122K,dojo shrinksafe压缩后,文件变成86K,yui compressor压缩后,文件变成72K,看起来yui compressor效果更好。测试了一下,压缩后的文件也没有出现什么问题。
其实两个工具都是基于Rhino(http://mozilla.org/rhino) 这个开源项目的,不同于其他压缩工具是基于正则表达式来进行JavaScript代码匹配来进行压缩,Rhino是一个JavaScript的解析器,是 解释需要压缩的JavaScript代码后再进行比如变量替换,消除空行,消除注释等压缩方法。Rhino是一个jar包,运行他需要在你的机器上安装 JDK,我安装的是j2sdk1.4.2_17,安装完成后,便可以使用了。
dojo shrinksafe基本上没有在Rhino基础上在进行封装,直接用Rhino即可,而yui compressor是基于Rhino的基础上,再进行了封装,使压缩效率更高。
使用方法:
安装jdk
cd /root/
wget http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/j2sdk-1_4_2_17-linux-i586-rpm.bin?BundledLineItemUUID=jB5IBe.o1awAAAEakdc_hkfV&OrderID=IXVIBe.oEIoAAAEaf9c_hkfV&ProductID=py5IBe.pWhAAAAEY1alJk805&FileName=/j2sdk-1_4_2_17-linux-i586-rpm.bin
chmod a+x j2sdk-1_4_2_17-linux-i586-rpm.bin
./j2sdk-1_4_2_17-linux-i586-rpm.bin
rpm -ivh j2sdk-1_4_2_17-linux-i586.rpm
dojo shrinksafe:
cd /root/
wget http://svn.dojotoolkit.org/src/util/trunk/shrinksafe/custom_rhino.jar
/usr/java/j2sdk1.4.2_17/bin/java -jar custom_rhino.jar -c infile.js > outfile.js 2 > &1
其中infile.js 即是你需要压缩的JavaScript文件,outfile.js 是压缩后的输出文件
yui compressor:
cd /root/
wget http://www.julienlecomte.net/yuicompressor/yuicompressor-2.3.4.zip
unzip yuicompressor-2.3.4.zip
cd yuicompressor-2.3.4/build/
/usr/java/j2sdk1.4.2_17/bin/java -jar yuicompressor-2.3.4.jar --preserve-semi -o outfile.js infile.js
类 似,其中infile.js 即是你需要压缩的JavaScript文件,outfile.js 是压缩后的输出文件,另外那个参数,--preserve-semi ,表示保留代码中的分号,为了压缩后的程序的正确性,我在这保留了分号。其他还有一些参数,具体可参见这:http://www.julienlecomte.net/yuicompressor/README
值得一提的是,yui compressor还支持css文件的压缩,但是对于css文件的压缩就是基于正则表达式的了,效果怎么样我没有测试,有兴趣的朋友可以自己测试一下。
- [转]Javascript压缩工具
- [转]Google的JavaScript压缩工具
- javascript 压缩工具
- Javascript压缩工具
- Javascript压缩工具(Javascript compressed,Js压缩)(转)
- JavaScript压缩工具:X2JSCompactor
- Javascript 在线压缩工具
- 分享JavaScript在线压缩工具
- javascript 压缩工具-YUI-compressor
- javascript 压缩工具Dojo compressor
- Javascript/CSS在线压缩工具
- Javascript代码压缩工具
- javascript压缩工具-YUI-compressor
- Google的JavaScript压缩工具
- Google的JavaScript压缩工具
- Javascript 压缩工具记录
- javascript在线格式化与压缩工具
- javascript压缩工具使用说明-ECMAScript cruncher
- oracle的主要内容,基本概念
- 错误mysql version wrong or lib not find,check mysql_config for more information解决
- Linux私房菜+课后练习第十章
- 初识oracle job
- 泛型方法经典解释
- [转]Javascript压缩工具
- 如何最大限度提高.NET的性能(转)
- ps命令
- 【转】用jsmin批量压缩JS的批处理文件
- iphone实例集锦
- android camera Intent调用
- C++中类得访问机制杂谈
- 卡特兰数一个有趣的应用模型及小结
- dos命令大全