20

我刚刚在这里找到了 Dean Edwards javascript 打包程序:http: //dean.edwards.name/packer/

它有几个选项,

  1. Base62 编码
  2. 收缩变量

为了测试它,我使用了已经缩小到 56kb 的最新版本的 jquery,并在上面的那个页面上使用收缩变量运行它,结果是相同大小的文件,56kb。

然后我再次运行原始文件,同时选择了 Base62 编码和收缩变量,结果是一个 42kb 的文件。

现在我对缩小和打包不太了解,因为它会使文件更小。但是我很好奇 Base62 编码在做什么,使用它不好吗?我看到它使文件更小,但它是否会在以后创建更多工作/负载以在页面上对其进行解码?

4

2 回答 2

34

Base 62 只不过是一个位置符号。也就是说,它可以用一个非常短的版本来表示非常长的普通文本。

在客户端可以使用 js 之前,使用 Base62 会增加一个额外的步骤。对于 jQuery 类型的库,此步骤在客户端上可能需要额外的 100 毫秒到 500 毫秒的时间,具体取决于许多因素。

现在我们可以将下载脚本的时间减少与执行脚本所花费的额外时间进行比较。它可能会减少 50 毫秒的下载时间,但需要额外的 100 毫秒来处理它。收益递减!!

于 2009-08-29T14:53:58.050 回答
17

它确实在客户端上创造了更多的工作。客户端必须运行代码来解码编码的脚本。如果您在编码块中输入一点点代码,这一点非常明显。

例如:

var a = 10;

编码为:

eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0 1=2;',3,3,'var|a|10'.split('|'),0,{}))
于 2009-08-29T14:29:31.083 回答