读书人

用 YUI Compressor 压缩跟混淆 JS 和

发布时间: 2012-11-06 14:07:00 作者: rapoo

用 YUI Compressor 压缩和混淆 JS 和 CSS

??? 对于 JavaScript 最有效的压缩优化,当属标识符替换。

??? 比如:

??? (function(){function add(num1, num2) {return num1 + num2;}})();

??? 进行属标识符替换后:

??? (function(){function A(C, B) {return C+ B;}})();

??? 再移除额外的空格,最终成了:

??? (function(){function A(C,B){return C+B;}})();

??? YUI Compressor 标识符替换仅替换函数名和变量名,那哪些不能被替代呢?

??? 1.原始值:字符串、布尔值、数字、null 和 undefined。一般来说字符串占的空间最多,而非数字字面量其次(true、false,null,underfinded)。
??? 2.全局变量:window、document、XMLHttpRequest等等。使用最多的就是 document、window。
??? 3.属性名,比如:foo.bar。占据的空间仅次于字符串,”.” 操作符无法被代替,且 a.b.c 更加费空间。
??? 4.关键字。经常被过度使用的关键字有:var、return。最好的优化方法:一个函数仅出现一次 var 和 return 关键字。
??? 对于原始值、全局变量、属性名的优化处理方式大致相同:任何字面量值、全局变量或者属性名被使用超过 2 次(包括2次),都应该用局部变量存储代替。

??? 但有部分情况下是禁止使用标识符替换的:

??? 1.使用 eval() 函数。解决方法:不使用或者创建一个全局函数封装 eval()。
??? 2.使用 with 语句。解决方法:方法同上。
??? 3.JScript 的条件注释。唯一解决的方法:不使用。
??? 由于 YUI Compressor 是建立在 rhino interpreter 基础上的,所以上述所有的优化都是安全的。

??? 五、参考资料:
??? 《Extreme JavaScript Compression With YUI Compressor》:
????http://www.slideshare.net/nzakas/extreme-javascript-compression-with-yui-compressor

??? 作者:张庆(网眼) 西安 PHP 教育培训中心 2010-8-18
??? 来自“网眼视界”:http://blog.why100000.com

?

?

读书人网 >CSS

热点推荐