在没有性能缺陷的情况下打包JavaScript代码的最佳方法是什么?
我正在寻找一种压缩iPhone的JavaScript代码的方法。有没有一种方法可以避免在小型且速度较慢的设备上使用大量CPU时间?
解决方案
使用YUI压缩器
使用JSMin并避免使用打包程序,因为打包程序的确占用更多CPU,并且"放气"的速度较慢
我相信iPhone上的Safari支持gzip输出,因此我们可以使用mod_deflate之类的东西。使用这种方法,我得到了最好的结果。相当多的JavaScript压缩内容绝对是垃圾,解压缩所花的时间比下载较大文件所需的时间更长。 JSMin看起来还不错。
我爱ShrinkSafe。它在Rhino中解释代码,然后返回压缩的代码。因为它在真实的解释代码上运行(而不是复杂的字符串评估),所以它永远不会破坏代码,也不会发现公共变量和私有变量之间的差异。
这是高质量的工具。
当客户端支持时,确保Web服务器正确地提供压缩/缩小的内容通常比压缩程序代码本身更有效。当然,同时使用这两种方法往往会减小尺寸。
我们已经使用js_compactor和JavaScriptLint在自动构建过程中"编译"和压缩我们的JavaScript。进一步的构建步骤将采用压缩JavaScript并将相关文件组合到一个包中。性能显着提高,但是请注意,我们已经失去了调试能力。
当文件数多时,减少传输到客户端的文件数将极大地提高性能。通常,浏览器一次只能打开到一台服务器的2个连接,因此,即使我们传输压缩和最小化的文件,浏览器也会花费大量的开销检查其缓存。 yslow帮助我们确定了为什么页面需要花费很长时间来加载,并帮助我们集中精力进行优化。我们检测到环境使用原始文件还是最小化和压缩版本。
我们可以在JavaScript CompressorRater中尝试其他工具。据我所知,除压缩程序外,所有工具都不会影响javascript的执行速度,因为它们只能删除空格,重命名变量等。
我自己认为YUI Compressor是最好的。
首先验证JSLint中的代码总是有用的,以确保压缩程序正确理解它。
最近几天我刚刚经历了这个小舞蹈。我们尝试使用Packer,但发现我们的打包JavaScript需要2秒钟以上的时间执行(更不用说阻止其他下载了)。根据本文,我们已切换到YUI Compressor。我们压缩后的文件不仅更小,执行时间还不到300毫秒。