【发布时间】:2016-05-04 23:14:44
【问题描述】:
我有一个包含数百个 div 元素的 HTML/JS 网站。几十个这样的元素应该以一种快速的方式(每秒最多 250 次)一次更新(即它们都应该一次更新,而不需要浏览器通过逐个执行更新来执行不必要的工作)一)。什么是最高效的方法(最小化 CPU 负载和内存消耗)支持现代浏览器使用纯 JavaScript 或简单库(不使用 React 或需要我修改代码之外的类似库)来实现这一点DOM 处理)?我正在寻找这样的东西(imaginaryLibrary 是我不知道的图书馆,我正在寻找):
var i, element;
for(i = 0; i < 20; i++){
element = document.getElementById('el' + i);
imaginaryLibrary.collectDomUpdate(element, cssClass, 'updatedCssClass');
}
//executes DOM updates collected in loop before and applies the DOM updates in one reflow
imaginaryLibrary.applyUpdates();
要更新的元素的父元素包含数千个元素,不应更新。
【问题讨论】:
-
在您处理完任何给定事件之前,浏览器是否会重新显示任何内容?似乎这样应该可以完成大部分工作。
-
最多有 1300 个 HTML 元素,其中最多 260 个应该在 4 毫秒内更新(在最坏的情况下)。
-
好的,但是您是否尝试过以直接的方式执行此操作,并确定这会导致数百次回流?
-
不,还没有——我想先以正确的方式做这件事,然后再以艰难的方式去做。即使可能以直接的方式工作,我也希望以最高效的方式。
-
"每秒最多 250 次" - 呃,什么显示器会更新得这么快?浏览器不会比必要的更频繁地呈现。而且你不能真的强迫它与JS有关。
标签: javascript performance dom