Base62编码一个javascript文件是不是很糟糕?

时间:2009-08-29 14:20:22

标签: javascript minify

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

它有几个选项,

  1. Base62编码
  2. 收缩变量
  3. 为了测试它,我将最新版本的jquery缩小到56kb并在上面的页面上使用缩小变量运行它,结果是相同大小的文件,56kb。

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

    现在我不知道很多关于缩小和打包的事情,然后它会使文件大小化。但我很好奇Base62编码在做什么,使用它是不是很糟糕?我看到它使文件变得更小但是它会在以后创建更多的工作/负载以在页面上解码它吗?

2 个答案:

答案 0 :(得分:34)

Base 62只是positional notation。也就是说,它可用于通过非常短的版本来表示非常长的普通文本。

使用Base62会在js可供客户端使用之前添加额外的步骤。对于jQuery类库,此步骤可能会在客户端上花费额外的100毫秒到500毫秒的时间,具体取决于许多因素。

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

答案 1 :(得分:16)

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

例如:

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,{}))