我有数百个项目列表,需要定期 ajax 更新并在移动设备(主要是移动 wekbkit 浏览器)上显示。对我来说,生成整个列表服务器端并使用 innerHTML
更新用户屏幕更容易。 。该列表主要是图片缩略图。我不希望屏幕闪烁太多,或者对他们的小型移动 CPU 造成太大的拖累。我的问题是:更新 <ul>
时什么表现更好列表,insertBefore
+ 客户端排序或innerHTML
整个列表?
最佳答案
最好的答案是:以两种方式编写并在目标浏览器上对其进行配置。
但是,在我之前的实验中,我通常发现在进行重大更新时,innerHTML
明显比通过 DOM 界面进行操作要快。这是有道理的:从根本上来说,浏览器将 HTML 解析为其内部结构并显示结果。这是他们存在的理由,并且他们为此进行了高度优化。相比之下,大量 DOM 调用需要通过 API 多次跨越 JavaScript/浏览器内部接口(interface),而该 API 可能适合也可能不适合浏览器的内部结构。当然,今天的情况与几年前有很大不同; DOM 更新比以前更加常见且更快。
但同样,这些东西根据您正在做的事情和目标浏览器的不同而变化很大,因此最好每种方式创建一个代表性测试并根据经验进行观察。
关于javascript - 什么会使用更少的CPU刻度: insertBefore vs innerHTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10684005/