javascript - 如何优化 "Parse HTML"事件?

标签 javascript google-chrome

在分析我的 web 应用程序时,我注意到我的服务器正在快速点亮,而 Chrome 似乎是瓶颈。我启动了 Chrome 的“时间线”开发者工具并获得了以下数字:

Total time: 523ms
Scripting: 369ms (70%)

我还从主 Javascript 文件运行了一些 console.log(performance.now()),加载时间实际上接近 700 毫秒。这对于我正在渲染的内容(一个空表和 2 个按钮)来说非常令人震惊。

我通过深入研究“脚本”继续我的调查:

Evaluating jQuery-min.js: 33ms
Evaluating jQuery-UI-min.js: 50ms
Evaluating raphael-min.js: 29ms
Evaluating content.js: 41ms
Evaluating jQuery.js: 12ms
Evaluating content.js: 19ms
GC Event: 63 ms

(我没有列出较小的脚本,但它们占了剩余时间)我不知道该怎么做。

  1. 这些数字正常吗?
  2. 我从这里去哪里?我应该运行其他工具吗?
  3. 如何优化 Parse HTML 事件?

最佳答案

尽管这个问题受到了所有的冷嘲热讽,但我很高兴地发现他们都错了。

我发现 Chrome 的分析器输出很难解释,所以我求助于 console.log(performance.now())。这让我发现页面需要 1400 毫秒来加载 Javascript 文件,甚至在我调用一行代码之前!

这没有多大意义,因此重新访问了 Chrome 的 Javascript 分析器工具。默认排序顺序 Heavy (Bottom Up) 没有显示任何有意义的内容,因此我切换到 Chart 模式。这表明正在加载许多浏览器插件,并且它们的运行时间比我预期的要长得多。所以我禁用了所有插件并重新加载了页面。你猜怎么着?加载时间下降到 147 毫秒。

没错:浏览器插件占了 90% 的加载时间!

总结一下:

  • JQuery 比 native API 慢得多,但这在宏伟的计划中可能无关紧要。这就是为什么优秀的程序员使用分析器来寻找瓶颈,而不是盲目优化。不要相信人们的主观偏见或“直觉”。如果我听从人们的建议优化掉 JQuery,它不会产生明显的差异(我会节省 100 毫秒)。
  • timeline 工具没有报告正确的总时间。跳过漂亮的图表并使用以下工具...
  • 从简单开始。使用 console.log(performance.now()) 验证基本假设。
  • Chrome 的 Javascript 分析器
    • 图表 将为您提供 Javascript 执行的时间顺序概览。
    • 树(自上而下) 将允许您深入研究方法,一次一个级别。
  • 关闭所有浏览器插件,重新启动浏览器,然后重试。您会惊讶于某些插件会产生多少开销!

我希望这对其他人有帮助。

PS:http://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/ 有一篇不错的文章如果您想用 native API 替换 jQuery,这会有所帮助。

关于javascript - 如何优化 "Parse HTML"事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24092764/

相关文章:

javascript - CSS 选择器和 querySelector 函数之间的结果差异

javascript - 主干 View 未填充

docker - 如何在 Dockerfile 中安装特定版本的 Chrome?

javascript - 当我尝试一个接一个地调用我注册的协议(protocol)时,只有一个可以随机调用

javascript - Mac 上的 Chrome 不会启动 WebDAV Word 编辑

javascript - 使用 D3 样条线时如何阻止图形被裁剪?

javascript - 带有参数的 Angular 路线不起作用

javascript - 寻找 JavaScript XML 差异工具

javascript - window.onresize 不在 Chrome 中触发,但在 Chrome 隐身模式中触发

css - 导出的 SVG 文件在浏览器中呈现不同