安卓原生浏览器中DOM处理时间过长

3
我目前正在尝试减少我的网站的前端加载时间。我已经采取了各种措施,如延迟加载javascript、使用精灵图、合并和压缩css/js文件等。在主流浏览器中,我已经看到了相当大的页面加载时间缩短。然而,我发现所有与Android相关的本机浏览器的DOM处理时间约为6-7秒,从而将页面加载时间提高到9秒,与其他浏览器的加载时间(约5秒)相比太高了。
我知道上面提供的信息没有代码,而且非常模糊。有人能指点我正确的方向,以减少Android本机浏览器中的DOM处理时间吗?

也许你正在document.ready事件上对巨大的DOM树进行一些选择器操作。http://blog.newrelic.com/2012/05/10/how-we-tune-our-own-app-using-rum-data/ - shiva
1个回答

1

前段时间,我做了很多IE6的优化工作。我学到的是尽可能使用特定的选择器。假设你有一个巨大的DOM树,并尝试使用jQuery选择三个具有类find_me的节点:

...
<div class="find_me">...</div>
<div class="find_me">...</div>
<div class="find_me">...</div>
...

$('.find_me') 返回所有匹配的元素,但浏览器需要检查整个DOM树以查找该类名。

因此,让我们将它们包装起来:

...
<div id="unique_wrapper">
  <div class="find_me">...</div>
  <div class="find_me">...</div>
  <div class="find_me">...</div>
</div>
...

$('#unique_wrapper .find_me')也会返回它们,但由于浏览器几乎立即选择具有id unique_wrapper的元素并忽略DOM树的其余部分,因此速度更快。

我不太清楚Android浏览器相对于旧版IE6优化了多少这种行为。但是我敢打赌,如果您优化选择器(假设您使用选择器),您可以稍微加快速度。


谢谢!但是这会影响页面加载时间吗?我确定在文档加载时没有进行任何DOM查找。 - Vivek S
我不知道你的应用程序是做什么的 ;) 对于IE6,我看到一个空白的视口大约要等待一分钟(!) 直到DOM被渲染。经过优化只需要一秒钟。有些元素在加载具有巨大DOM树的页面时动态显示或隐藏。而你说DOM处理时间很长...但如果你没有进行任何DOM查询,那么这将是出于其他原因... - RobDil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接