尽管 我们之前提到过,但我认为 Addy Osmani 撰写的这篇关于 JavaScript 性能问题 的优秀文章仍然值得我们深入探讨。
在这篇文章中,Addy 触及了性能工作的各个方面,以及我们如何解决一些最严重的问题,从建立预算到“互动时间”测量和审核您的 JavaScript 包。
拥抱性能预算并学会在其中生存。对于移动设备,目标是将 JS 预算设置为小于 170KB(压缩/最小化后)。未压缩时,这仍然大约是 0.7MB 的代码。预算对于成功至关重要,但是,它们本身并不能神奇地解决性能问题。团队文化、结构和执行非常重要。在没有预算的情况下构建会带来性能倒退和失败。
超级具体且超级实用!
令人惊讶的是,Addy 提到“当今的中位网页目前大约传输 350KB 的最小化和压缩后的 JavaScript”,老实说,这似乎比我预期的要低得多。最让我害怕的统计数据是,中位网页需要大约 15 秒才能实现交互。而将所有这些 JS 放入 Web Worker 或使用 Service Workers 进行缓存甚至无法弥补这段交互时间。糟糕。
另一个关键点:并非所有字节都相同。例如,200KB 的 JavaScript 不等于 200KB 的 JPG 图片文件。
JPEG 图片需要解码、光栅化并绘制到屏幕上。JavaScript 包需要下载,然后解析、编译、执行——引擎还需要完成许多其他步骤。请注意,这些成本并不完全等效。