我正在寻找一种压缩 iPhone 的 JavaScript 代码的方法。有没有办法避免在小型且速度较慢的设备上使用大量 CPU 时间?
8 回答
使用YUI 压缩器
我喜欢ShrinkSafe。它在 Rhino 中解释您的代码,然后返回压缩代码。因为它在真正的解释代码上运行(而不是复杂的字符串评估),所以它永远不会混淆代码或找不到公共变量和私有变量之间的差异。
这是一款质量上乘的工具。
我们已经使用js_compactor和JavaScriptLint在我们的自动构建过程中“编译”和压缩我们的 JavaScript。进一步的构建步骤将压缩 JavaScript 并将相关文件合并到一个包中。性能提升是显着的,但请注意,您正在放弃调试能力。
当有多个文件时,减少传输到客户端的文件数量将大大提高性能。通常,浏览器一次只会打开 2 个与单个服务器的连接,因此即使您正在传输压缩和最小化的文件,浏览器也会花费大量开销检查其缓存。 yslow帮助我们确定了页面加载时间过长的原因,并帮助我们集中精力进行优化。我们检测我们的环境以使用原始文件或最小化和压缩版本。
我相信 iPhone 上的 Safari 支持 gzip 输出,所以你可以使用类似 mod_deflate 的东西。使用这种方法,我得到了最好的结果。相当多的 JavaScript 压缩内容绝对是垃圾,并且解压缩所需的时间比下载更大的文件所需的时间要长。不过,JSMin 看起来还不错。
您可以在The JavaScript CompressorRater尝试不同的工具。据我所知,除了打包器之外的所有工具都不会影响 javascript 的执行速度——它们只会删除空格、重命名变量等。
我自己认为YUI Compressor是最好的。
首先验证JSLint中的代码以确保压缩器正确理解它总是有用的。
当客户端支持它时,确保您的网络服务器正确地提供压缩/放气的东西通常比缩小程序代码本身更有效。当然,同时使用两者往往会产生更小的尺寸。
I just went through this little dance in the last few days. We tried using Packer, but found that our packed JavaScript was taking over 2 seconds to execute (not to mention blocking other downloads). Based on this article we've switched to YUI Compressor. Not only are our gzipped file sizes smaller, execution times are under 300 ms.