2011-05-16 162 views
5

我正在构建一个页面的web应用程序,它开始变得非常大。该应用有几个组件,每个组件都有精心的样式。平均而言,该应用的DOM元素数量为1200+。我的YSlow扫描发出警告,这太多了,我应该没有超过700个DOM元素。DOM元素太多

我通常对我的标记相当严格和高效,我怀疑我能够修剪得多。我倾向于使用很多DOM元素来完全正确地设计样式,并且跨浏览器工作。

如何大幅度削减DOM元素的数量? 我是否需要在页面加载时按需加载更多内容(ajax)而不是全部? 大量的DOM元素对性能有很大的影响吗?

我很乐意听到人们对这个,你可能有任何解决方案的经验......

+1

如果您可以提供一些示例HTML和/或Javascript,我们可能会建议您如何浓缩它。 – 2011-05-16 19:38:06

+0

我想最好的问题是为什么你需要在同一页面上的所有这一切。你可以做分页或什么? – 2011-05-16 19:46:26

+0

我们在这里说什么浏览? – 2011-05-16 20:47:35

回答

5

DOM元素的数量只会进入画面,如果你做了很多DOM和/或通过Javascript在页面上对CSS进行操作。在包含50,000个元素的页面中扫描ID总是会比只有500个页面的页面慢。更改大多数页面继承的CSS样式很可能导致更多的重新绘制/回流比简单的更多页面等...

减少元素数量的唯一方法是简化页面。

+0

那么1200+的计数是不是不寻常的呢?我确信我注意到最近一周Chrome浏览器开发工具正在减速...... – wilsonpage 2011-05-16 19:41:02

+4

您网页中的每个标记都会成为一个元素。如果您需要1200多个标记来表示“hello world”,那么您遇到了问题。这取决于内容。 – 2011-05-16 19:42:33

+2

@MarcB - '

' – 2012-06-01 00:28:46

3

我们已经构建了单页网页应用程序。最初,Yslow担心我们页面中有2000多个DOM对象。

经过一番努力,我们把所有其他的Yslow物品都变成了绿色。我们结束了它的生活(现在大约1800),因为这款应用在各种浏览器中速度非常快。

但是我们不支持IE6和IE7,它可能会因这些浏览器而不同。

+0

感谢分享你的经验!我不会太担心。不幸的是,我不得不支持IE7,但不支持IE6。 – wilsonpage 2011-05-16 21:01:32

2

如何大幅度削减DOM元素的数量?

通过仅使用那些必要的元素。如果您想要更详细的建议,请发布您的代码。

我需要在页面加载时按需加载更多的内容(ajax)吗?

如果您希望页面在启动时执行得更好,您可以这样做。

大量的DOM元素是否对性能有很大的影响?

不一定。

0

当用户单击按钮或可以使用像Twitter这样的延迟加载时,您可以按需渲染元素。