JS 的加载速度,包括下载和运算两部分(参考 JavaScript Library Loading Speed):

Total_Speed = Time_to_Download + Time_to_Evaluate

运算(evaluate)又可细分为解析(parse)和执行(execute)。考虑加载速度时,一般放在一起考虑。

通常来说,下载时间是影响 JS 加载速度的关键。这方面的优化已经很成熟,比如 Compressor, GZip, Cache 等等。

evaluation 部分,目前主要优化方案是延迟(称之 Deferred Evaluation)。具体策略有:

  1. 将 JS 代码以注释的形式下载,需要使用时再 parse. 可以参考 GMail for Mobile Team 的研究。
  2. 将 JS 代码以字符串定义的形式下载。可以参考 SproutCore Blog 的分析。
  3. 将 JS 代码以闭包的形式下载。

第一种策略能将 evaluation 完全延迟,后两种还存在少量未被延迟的 evaluation, 但和第一种差异很小。下面讨论第三种。
阅读全文 »