【发布时间】:2015-03-26 09:37:56
【问题描述】:
我们使用 asp.net mvc、javascript 和 jQuery(托管在本地机器上)创建了一个应用程序。基本设计是,我们将所有 HMTL 元素保留在 DOM 对象(浏览器)中,而不是销毁,方法是在用户从一个页面导航到其他页面时隐藏和显示 HTML 页面。
我们的应用程序每天都在增长。早些时候,我在我的项目中没有看到任何性能问题。但是现在,如果我将一个页面导航到另一个页面需要很长时间。今天检查了我页面中的DOM元素,超过了20000个。
问题:
隐藏/显示 HTML 页面是比破坏和重新创建更好的设计吗?
使用 20,000 个 DOM 对象从 javascript 进行 DOM 操作,在回流和重印方面对性能有什么影响?
【问题讨论】:
-
DOM 操作很昂贵。如果您使用 jQuery 构建/销毁大约 20,000 个元素,那么您做错了。
-
我在单个页面中可以维护的 DOM 对象的最大限制是多少?我读到的某个地方是 700 到 1000。
-
我建议您对元素进行 AJAX 分页。这是一种两全其美的妥协。您的调用速度比页面加载速度快,但不如隐藏和显示快(除非页面上有 20,000 个元素)
-
假设我们有 4 个标签,每个标签我正在加载一页。如果用户将一个页面移动到另一个页面,我们将隐藏 div 而不是销毁。我知道这是错误的实施方式。但我是团队的新手,在向我的技术专家解释之前,我需要更多关于回流的信息,以及如果 DOM 有更多元素,回流的影响是什么。
标签: javascript asp.net-mvc dom reflow