【问题标题】:Lighthouse audit: Script evaluation vs Script ParsingLighthouse 审计:脚本评估与脚本解析
【发布时间】:2020-03-11 22:36:13
【问题描述】:

在 chrome 开发人员工具中运行灯塔审计时,我收到了以下关于 javascript 执行的报告。我发现与 Script Parse 相比,main.js 在 Script Evaluation (455 ms) 中花费了很多时间(5 毫秒)。但我无法弄清楚这个脚本评估时间是多少?是下载脚本所花费的时间吗?我怎样才能减少它?

【问题讨论】:

  • 到了实际运行脚本的时间(evaled)。

标签: javascript html performance google-chrome-devtools lighthouse


【解决方案1】:

根据以下 Lighthouse 参考资料https://web.dev/bootup-time/,执行任何 JS 文件有四个主要成本:

  • 网络费用
  • 解析和编译成本:JavaScript 在主线程上被解析和编译。当主线程忙时,页面无法响应用户输入。

  • 执行成本:JavaScript 也在主线程上执行。如果您的页面运行 在真正需要之前编写大量代码,这也会延迟您的 Time To 交互性,这是与用户如何使用相关的关键指标之一 感知您的页面速度。

  • 内存消耗

我相信 Lighthouse 术语中的评估时间是解析脚本后将整个文件加载到内存中的时间。换句话说,您必须检查繁重的文件并尝试优化文件本身的代码。以下是我从研究您正在检查的同一问题中学到的一些事实:

  • 脚本评估是从解析脚本到执行脚本之间的阶段,主要是将代码加载到内存中。
  • 未使用的代码会对解析时间产生负面影响,但不会影响评估和执行时间。
  • 解析时间随着脚本代码大小的增加而增加。
  • 脚本评估时间随着使用代码量的增加而增加。
  • 仅当脚本影响 TTI 时,Lighthouse 才会将脚本标记为阻塞主线程。例如,如果 10 MB 的脚本文件作为渲染阻塞资源添加到任何页面但未被使用,Lighthouse 会将其标记为渲染阻塞资源,而不是阻塞主线程问题。
  • 脚本评估是运行页面需要多少代码的指标。

解决方案可能是将文件拆分为两个文件,一个是最初应该加载的关键文件,另一个可以延迟以优化性能。

【讨论】:

  • 分割文件会减少TTI吗?它会减少 TBT,但不确定 TTI。
猜你喜欢
  • 1970-01-01
  • 2020-09-16
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
相关资源
最近更新 更多