我想问一下是否有人测量了一些javascript混淆器对结果代码的影响。我的目标是移动用户,因此速度很快。而且我特别想尝试连续在同一个代码上运行2到3个不同的混淆器,这会很好地模糊代码,但我担心它会对速度产生影响。
答案 0 :(得分:3)
不应该。编译器/口译员可能不关心你的符号是什么,只要它们是正确的。
答案 1 :(得分:1)
您的问题确实需要对自己的javascript进行分析才能得出有用的答案。
通常情况下,混淆实际上会加速javascript,因为文件大小减少了(加载速度更快),符号得到的名字也很少(比较少)。
答案 2 :(得分:1)
如果混淆器正在进行一些编码并调用eval,就像有些人一样,那么在脚本加载时会有性能损失。在运行之后,应该没有区别,并且如前所述,由于较慢的大小,它可能会加速您的代码。
答案 3 :(得分:1)
大多数JavaScript混淆器仅缩小并重命名局部变量,这非常容易使用美化器进行逆向工程。
我发现的最佳组合是DojoToolkit和高级模式下的Closure编译器。
高级模式下的关闭使得JavaScript代码几乎不可能进行逆向工程,即使在通过美化器之后也是如此。一旦您的JavaScript代码被混淆,超出任何认可和任何反向工程的可能性,您的HTML将不会泄露您的大部分秘密。
此链接用于在移动应用程序的高级模式下使用Dojo Toolkit和Closure Compiler:
高级模式下的Closure编译器实际上使JavaScript在移动环境中运行更快,因为它具有工业规模的优化。例如,函数的内嵌,原型方法的虚拟化,命名空间折叠,死代码删除等都会使代码运行得更快,因此它不仅是一个混淆器,它也是一个优化编译器。
我自己的基准测试在iPad上运行代码的速度提高了10-20%,在Android上运行速度提高了30%。内存使用量也减少了。
答案 4 :(得分:0)
这取决于混淆的含义。
如果您指的是缩小,使用像JSMin这样的工具,则效果为零。
如果您正在谈论像Packer这样的事情,那么eval过程确实会对代码执行所需的时间产生影响。在速度较慢的设备上,这种影响可能很大。