高性能网站建设指南(十)精简JavaScript
in Blog
精简(Minification)是从代码中移除不必要的字符以减少其大小,进而改善加载时间的实践。在代码被精简后,所有的注释以及不必要的空白字符(空格、换行和制表符)都将被移除。对于JavaScript而言,这可以改善响应时间效率,因为需要下载的文件大小减小了。
混淆(Obfuscation)
混淆是可以应用在源代码上的另一种优化方式。和精简一样,它也会移除注释和空白,同时它还会改写代码。作为改写的一部分,函数和变量的名字将被转换为更短的字符串,这时的代码更加精炼,也更难阅读。通常这样做是为了增加对代码进行反向工程的难度,但这对提高性能也有帮助,因此这比精简更能减小代码的大小。
精简是一个安全并且相当简单的过程。而混淆则更为复杂,有三个缺点:缺陷(由于混淆更加复杂,混淆过程本身很有可能引入错误)、维护(由于混淆会改变JavaScript符号,因此需要对任何不能改变的符号进行标记,防止混淆其修改它们)、调试(经过混淆的代码很难阅读,使得在调试问题时更加困难)。
内联脚本(Inline Scripts)
之前一直关注外部JavaScript文件,而内联的JavaScript块也应该精简。实际上,精简内联脚本比精简外部脚本要容易。使用集成的JSMin,内联的JavaScript都会在呈现为HTML文档之前被精简。
压缩和精简(Gzip and Minification)
gzip压缩产生的影响最大,但精简能够进一步减小文件大小。随着JavaScript的使用量和大小不断增长,精简JavaScript代码能够得到更多的节省。
精简CSS(Minifying CSS)
精简CSS能够带来的节省通常要小于精简JavaScript,因为通常CSS中的注释和空白比JavaScript少。最大的潜在节省来自于优化CSS——合并相同的类、移除不使用的类等。最佳的解决方案还是移除注释和空白,并进行一些直观的优化(使用缩写,“#000”代替“#000000”)和移除不必要的字符串(“0”代替“0px”)。