在繁重的网页上一段时间后,浏览器会变得更加灵敏
Browser getting more responsive after a while on heavy web page
当我们加载一个包含巨大 html 表单和大量事件处理程序代码的非常繁重的网页时,页面会在一段时间内变得非常滞后,以响应任何用户交互(例如更改输入值)延迟 1-2 秒。
有趣的是,一段时间后(取决于页面的大小和要解析的代码,但大约需要 1-2 分钟)它变得像正常大小的网页一样快速。我们尝试使用开发工具中的探查器来查看后台可能有什么 运行 但没有发生任何令人惊讶的事情。
页面加载后没有网络流量发生,也没有任何阻塞代码 运行 并且 HTML 根据分析器,当时解析早已消失。
我的问题是:
- 浏览器是否会在后台对 DOM 进行任何类型的索引以加快元素查询速度?
- 任何其他类型的优化,例如缓存重复的函数调用结果?
- 是什么原因导致它在一段时间后 "catch up"?
注意:很明显,我们的前端已经过时且效率低下,但我们希望在大改写之前从中挤出所有内容。
是的,现代浏览器,即现代 Javascript 运行时在加载期间执行许多优化,更重要的是在页面生命周期期间:其中之一是 "Lazy / Just In Time Compilation, what in general means that runtime observes demanding or frequently performed patterns and translates them to faster, "更接近“金属”格式。通常成本更高内存消耗。有趣的是,这种优化通常使 "seemingly ugly and bad but predictable" 代码比经过深思熟虑的复杂 "hand-crafted optimised" 代码更快。
但我不完全确定这是你描述的现象的主要原因。初始缓慢和无响应通常是由网络请求、阻塞代码、HTML 和 CSS 解析和 CPU/GPU 渲染引起的,即 wire/cache->内存->cpu/gpu 循环,这并不依赖于之前提到的 Javascript 优化。
进一步阅读:
当我们加载一个包含巨大 html 表单和大量事件处理程序代码的非常繁重的网页时,页面会在一段时间内变得非常滞后,以响应任何用户交互(例如更改输入值)延迟 1-2 秒。
有趣的是,一段时间后(取决于页面的大小和要解析的代码,但大约需要 1-2 分钟)它变得像正常大小的网页一样快速。我们尝试使用开发工具中的探查器来查看后台可能有什么 运行 但没有发生任何令人惊讶的事情。 页面加载后没有网络流量发生,也没有任何阻塞代码 运行 并且 HTML 根据分析器,当时解析早已消失。
我的问题是:
- 浏览器是否会在后台对 DOM 进行任何类型的索引以加快元素查询速度?
- 任何其他类型的优化,例如缓存重复的函数调用结果?
- 是什么原因导致它在一段时间后 "catch up"?
注意:很明显,我们的前端已经过时且效率低下,但我们希望在大改写之前从中挤出所有内容。
是的,现代浏览器,即现代 Javascript 运行时在加载期间执行许多优化,更重要的是在页面生命周期期间:其中之一是 "Lazy / Just In Time Compilation, what in general means that runtime observes demanding or frequently performed patterns and translates them to faster, "更接近“金属”格式。通常成本更高内存消耗。有趣的是,这种优化通常使 "seemingly ugly and bad but predictable" 代码比经过深思熟虑的复杂 "hand-crafted optimised" 代码更快。
但我不完全确定这是你描述的现象的主要原因。初始缓慢和无响应通常是由网络请求、阻塞代码、HTML 和 CSS 解析和 CPU/GPU 渲染引起的,即 wire/cache->内存->cpu/gpu 循环,这并不依赖于之前提到的 Javascript 优化。
进一步阅读: