15

为了将所有模块组合成一个资源,我们将每个模块写入一个单独的脚本标签,并将代码隐藏在注释块 (/* */) 中。当资源第一次加载时,没有任何代码被解析,因为它被注释掉了。要加载一个模块,找到对应脚本标签的 DOM 元素,去掉注释块,然后 eval() 代码......

在 iPhone 2.2 设备上,块注释中保存的 200k JavaScript 在页面加载期间增加了 240ms,而在页面加载期间解析的 200k JavaScript 增加了 2600ms。通过在页面加载期间消除 200k 不需要的 JavaScript,启动延迟减少了 10 倍以上!

http://googlecode.blogspot.co.uk/2009/09/gmail-for-mobile-html5-series-reducing.html https://developers.google.com/speed/docs/best-practices/mobile

gmail 文章已有三年多的历史了,从那时起,移动性能方面就有了很大的优势,即 iOS 的 Nitro 和 JIT 之类的东西进入了移动端。使用 eval 是否还能获得性能提升?

4

1 回答 1

3

由于 JavaScript 引擎变得如此高性能,它与以前的技术问题不同。相反,在更像应用程序方面还有其他考虑因素。

在此处输入图像描述

现在有一些不同的技巧,例如使用 Web Worker 处理 ajax 请求以释放线程,利用 GPU 与 CSS 转换和 requestAnimationFrame 甚至 asm.js。使用 localStorage/sessionStorage 和 Application Cache 是另一种方法,您可以在其中真正获得大量客户端缓存,以避免调用内容 JSON/图像数据 url/视频以外的任何内容,并将内容加载/执行到内存中从这些缓存中需要。

换句话说,这是一个不同的时间,您的问题很有趣,但没有集中在正确的领域以真正改变网络应用程序的性能。

于 2013-10-30T01:42:39.650 回答