优化 DOM 大小

Connor Clark
Connor Clark

发布时间:2025 年 10 月 8 日

大型 DOM 可能会增加样式计算和布局的用时,从而影响网页响应速度。大型 DOM 也会增加内存用量。

深层 DOM 树本身并不是性能问题,但它是使用不必要的元素嵌套的设计模式的症状。

此数据洞见会考虑整个 DOM,包括影子根中的内容。它会忽略不是元素的 DOM 节点。它还会忽略 <iframe> 内容。

正确的预期:

  • 元素总数:网页 DOM 中的元素总数。
  • DOM 深度:DOM 树的最大深度。
  • 子元素最多的元素:具有最多子元素的元素。

如何传递此分析洞见

只有在布局或样式重新计算时间超过 40 毫秒时,此数据洞见才会失败。

  • 大型布局更新涉及 100 多个布局对象(大致相当于元素)。
  • 大型样式重新计算会影响 300 多个元素。

如果失败,此意见会在性能面板中的火焰图上突出显示这些事件。

如需降低这些活动的费用,请执行以下操作:

针对特定堆栈的指南

此数据分析还针对使用以下技术的网页提供特定于堆栈的指导:

Angular

如果您要呈现大型列表,请使用 Component Dev Kit (CDK) 进行虚拟滚动

回应

  • 如果您要在页面上呈现很多重复元素,不妨使用“窗口类”库(如 react-window)尽量减少所创建的 DOM 节点的数量。
  • 使用 shouldComponentUpdatePureComponentReact.memo 尽量减少不必要的重新渲染。
  • 如果您使用 Effect 钩子来提高运行时性能,则应该仅在某些依赖项发生更改之前跳过效果

其他参考资料