`
icrwen
  • 浏览: 266570 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

js文件压缩的两种方法

阅读更多
方法一:Javascript压缩工具(Javascript compressed,Js压缩)

作者: Choy Lv&<60;&<60;日期: 2007-09-02 02:01


Javascript压缩(Js压缩)工具聚合

怎么压缩Js?为什么要压缩Javascript? Javascript compressed/crunched
开发Ajax除了自己要写js代码外,同样也免不了要使用其它第三方js库,是否该为JavaScript减肥?
当你提高了用户体验,做出了很绚丽的效果而欣喜的时候,是否想过优化一下JS的效率,比如微软的live,其中的js做了压缩处理。JS的速度分为两种, 下载速度和执行速度。今天就先来说说下载速度。要想js的下载速度快,就需要尽量减小js文件的大小。这里我们可以使用一个工具ESC (ECMAScript cruncher)来帮我们完成这个工作,不过这个工具只能在Windows下使用。到http://www.saltstorm.net/depo/esc/introduction.wbm?pod=js下载ESC.zip,解压后看看它的帮助文档。很简单。

压缩级别分为5种,从0到4

Level 0 :: No compression

Level 1 :: Comment removal

Level 2 :: Whitespace removal

Level 3 :: Newline removal

Level 4 :: Variable substitution

在WINDOWS命令行下执行

cscript ESC.wsf -ow menu2.js menu.js将会把menu.js按照js压缩级别2来压缩(默认js压缩级别为2)为menu2.js

cscript ESC.wsf -l 3 -ow menu3.js menu.js将会把menu.js按照js压缩级别3来压缩为menu3.js

需要注意的是,js压缩级别4会把变量名修改,如果你的js中用到了全局变量或者类的话,就不能使用该压缩级别了,否则其它使用你的js的文件可能会无法正常运行。

试了一下,把yui的menu.js压缩了一下,对应的级别和压缩率分别如下:

js压缩级别1:压缩率44.41%

js压缩级别2:压缩率62.82%

js压缩级别1:压缩率64.93%

原来130多K的js文件压缩后也就40多K,看来还是挺有用处的。


另外还有一个小工具jsmin也可以压缩,不过没有ESC的level选项,看了一下好像压缩效果类似于ESC的level3.济南大学的一些老师写了个jsmin的图形界面程序JsMinGUI,使用起来更加方便。:-)

Dojo项目组也提供了一个工具,shrinksafe可以通过http://alex.dojotoolkit.org/shrinksafe/在线的上传要压缩的文件,处理完毕后可以保存到本地,另外shrinksafe还提供了一个本地运行的版本,需要jre1.4的支持。

Ps:对于一些压缩的代码,在阅读时可以用JavaScript Code Improver来进行格式化。看看它主页上的一个例子:
javascript压缩代码示例
原来的代码:
程序代码
<script language="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>


格式化后:
程序代码
<script language="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/&<60;&<60;在线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>&<60;&<60;
&<60;&<60;&<60;&<60;<filter-name>AddHeaderFilter</filter-name>&<60;&<60;
&<60;&<60;&<60;&<60;<filter-class>&<60;&<60;
&<60;&<60;&<60;&<60;&<60;&<60;&<60;&<60;badqiu.web.filter.AddHeaderFilter&<60;&<60;
&<60;&<60;&<60;&<60;</filter-class>&<60;&<60;
&<60;&<60;&<60;&<60;<init-param>&<60;&<60;
&<60;&<60;&<60;&<60;&<60;&<60;&<60;&<60;<param-name>headers</param-name>&<60;&<60;
&<60;&<60;&<60;&<60;&<60;&<60;&<60;&<60;<param-value>Content-Encoding=gzip</param-value>&<60;&<60;
&<60;&<60;&<60;&<60;</init-param>&<60;&<60;
</filter>&<60;&<60;
&<60;&<60;
<filter-mapping>&<60;&<60;
&<60;&<60;&<60;&<60;<filter-name>AddHeaderFilter</filter-name>&<60;&<60;
&<60;&<60;&<60;&<60;<url-pattern>*.gzjs</url-pattern>&<60;&<60;
</filter-mapping>


测试prototype.js是否正常的代码
程序代码
<html>&<60;&<60;
<head>&<60;&<60;
<!-- type="text/javascript"不可少,有的浏览器缺少这个不能运行 -->&<60;&<60;
<script src="prototype.gzjs" type="text/javascript"></script>&<60;&<60;
</head>&<60;&<60;
<body>&<60;&<60;
&<60;&<60;&<60;&<60;<input id="username" name="username" value="badqiu"/><br />&<60;&<60;
&<60;&<60;&<60;&<60;<input id="email" value="badqiu@gmail.com"/>&<60;&<60;
<script>&<60;&<60;
&<60;&<60;&<60;&<60;<!-- 测试prototype的方法是否正常-->&<60;&<60;
&<60;&<60;&<60;&<60;alert($F('username'))&<60;&<60;
</script>&<60;&<60;
</body>&<60;&<60;
</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

其主要是利用服务器自带的动态压缩功能 传输时压缩数据流.

Javascript compressed,Js压缩,javascript压缩,js压缩工具,js压缩合并,js文件压缩


三、在线压缩工具(小js文件更好)
http://yui.2clics.net/

分享到:
评论

相关推荐

    Javascript开发之js压缩篇.pdf

    文章中介绍了两种解决方法:一、使用yui-compressor对js文件进行压缩混淆,二、使用gzip压缩来减少文件体积。 首先,作者提到使用ExtJS库时遇到的问题,即ExtJS庞大的体积如何进行压缩和优化。作者引入了OPOA组件式...

    js css文件压缩工具

    "js&css压缩工具"是一个专门针对这两种文件类型的压缩工具,它能有效地减小文件大小,从而降低网络传输的数据量,提升用户体验。 一、JavaScript(js)压缩 JavaScript压缩的主要目标是去除代码中的空白、注释以及...

    JS压缩工具

    YUICompressor有两种模式:混淆模式和非混淆模式。混淆模式不仅压缩代码,还会对变量和函数名进行重命名,使其变得更短,进一步减小文件大小。但这种模式可能导致调试困难,因此在开发阶段通常不建议使用。 **如何...

    CSS,JS文件压缩器,淘宝打包

    标题“CSS,JS文件压缩器,淘宝打包”所指的是一款专门针对CSS和JavaScript文件进行优化的工具,其主要功能是压缩和混淆这两种类型的文件,以达到减小文件体积的目的。在Web开发中,文件大小直接影响到网页加载速度...

    gzip压缩js,csss文件

    在IT行业中,优化网站性能是至关重要的,其中一种方法就是对JavaScript(js)和CSS(css)文件进行压缩。本文将详细讲解如何使用gzip工具来压缩这两种文件,以减少网络传输的数据量,从而提高网页加载速度。 gzip是...

    netJS压缩文件源码

    常见的js压缩方法有两种:代码混淆(minification)和去除空白与注释(gzip压缩)。代码混淆通过缩短变量名和函数名,删除不必要的空格、换行和注释来达到压缩效果。例如,使用UglifyJS或Terser工具可以实现这一过程...

    基于javascript的压缩和解压缩以及文件系统的demo

    总的来说,这个demo是一个利用JavaScript、HTML5 File System API和其他相关技术实现的文件压缩和解压缩工具,它在浏览器环境中提供了文件系统的操作,并支持离线访问和文件打包下载,体现了JavaScript在Web开发中的...

    js、css文件压缩工具

    JavaScript(简称JS)和CSS是构建网页不可或缺的两种技术,它们负责实现动态功能和样式设计。然而,未经处理的JS和CSS源代码通常包含许多空格、注释和换行,这增加了文件大小,影响了网页加载速度。为了优化网页性能...

    js图片压缩

    JS图片压缩通常采用这两种方法的组合,通过调整压缩级别来平衡图片质量和文件大小。 2. 基本步骤: - 读取图片:使用FileReader API读取图片文件为Blob对象。 - 转换格式:将Blob对象转换为二进制数据,如...

    JS和CSS压缩工具

    4. **Closure Compiler**: Google提供的JavaScript压缩工具,提供简单和高级两种压缩模式。 5. **YUI Compressor**: Yahoo开发的JS和CSS压缩工具,对代码进行压缩和优化。 四、自动化工作流 在实际开发中,开发者...

    js,css压缩工具

    5. **单个JS, CSS文件压缩** 当你需要单独处理某个JS或CSS文件时,该工具也能提供精确的压缩服务。这对于局部调整或者测试压缩效果来说非常方便。 **工具组件介绍** - **yuicompressor.bat**: 这是一个批处理脚本...

    js利用crypto进行"aes-128-cbc"解密压缩视频文件

    mp4Encrypt.js和mp4Dencrypt.js是两个关键的JavaScript脚本文件。mp4Encrypt.js可能包含了加密视频文件的逻辑,包括生成随机的IV,设置AES密钥,以及使用crypto库的createCipheriv方法来执行加密过程。而mp4Dencrypt...

    gzip 压缩 三种方法

    本文将详细介绍如何在PHP环境中利用gzip进行数据压缩,涵盖两种服务器端配置方法以及一种通过PHP代码实现的gzip压缩。 一、服务器端配置 1. **HTTP头设置**: 在服务器配置文件中(如Apache的`.htaccess`或Nginx...

    js批量压缩工具

    JavaScript是一种广泛应用于网页和网络应用的编程语言,其源代码默认是明文的,为了提高网页加载速度和保护代码安全,通常需要对JS文件进行压缩。"js批量压缩工具"就是为了满足这一需求而设计的,它能高效地处理多个...

    mvc js和css文件压缩合并

    在实际应用中,`Bundle`类提供了两种压缩方式:`BundleTransforms`和`BundleResolver`。例如,我们可以使用`Minify`库进行CSS和JS的压缩,通过添加以下代码: ```csharp var cssBundle = new StyleBundle("~/...

    js压缩混淆工具

    标题“js压缩混淆工具”所指的是专门针对JavaScript代码的优化工具,它通常具备两个主要功能:压缩和混淆。压缩主要是去除代码中的空格、注释以及不必要的换行,使代码紧凑,从而减少文件大小;混淆则是将变量名、...

    格式化及压缩js文件

    在JavaScript开发过程中,为了优化网页性能,我们经常会对JS文件进行格式化和压缩。格式化主要是为了让代码更易读、易维护,而压缩则是为了减少文件大小,加快页面加载速度。下面将详细介绍这两个过程。 首先,**...

    javascript压缩工具

    JS的速度分为两种,下载速度和执行速度。要想JS的下载速度快,就需要尽量减少js文件的大小,另外,把多个js文件合并成一个也能因为减少服务器的响应次数而加快网页下载。 此外,很多程序辛辛苦苦的写出来的...

    IIS启用GZIP压缩js、css无效的原因及解决方法.docx

    确保`HcDoStaticCompression`和`HcDoOnDemandCompression`属性都设置为"TRUE",并且在`HcFileExtensions`属性中添加"css"和"js",表示要压缩这两种类型的静态文件。同时,可以将`HcDynamicCompressionLevel`和`...

    JS CSS压缩工具

    JavaScript 和 CSS 是网页开发中的两种基础技术,它们负责实现页面的动态交互和视觉样式。然而,未经优化的JS和CSS代码会增加页面加载时间,影响用户体验。为了提高网站性能,开发者通常会使用“JS CSS压缩工具”来...

Global site tag (gtag.js) - Google Analytics