对于具有大量DOM元素的网站,在iframe中呈现某些内容是否有任何性能优势?例如,我正在处理的应用程序有一个非常大的基于html的树,一次可能包含数以万计的节点(尽管一次不能加载)。抛开这种大小的树可用性问题,将这些内容放在iframe中,而不是在主页面中会有什么好处?浏览器对内嵌在iframe中的内容处理内存不同吗?这会通过隔离此内容来提高jquery选择器的性能吗?我最感兴趣的是如何应用于IE 7,尽管如果浏览器不同,我会好奇的。iframe是否可以提高具有大量dom元素的网站的性能?
回答
+1对于一个好问题。我不知道帧和基于非帧的内容之间的内存处理有什么区别;我写了几个XHTML解析器,内存就是内存;无论节点在哪里存储,节点都会占用内存。所有的ID查找都是通过键(哈希表)完成的,所以这些集合可以非常大并且具有非线性影响。
这是解析和内存方面;不过,我发现渲染时间可能会因较大的innerHTML插入而受到影响,所以请尝试使用document.createElement
模式(如果适用)。我在各种浏览器中体验过这种行为,包括IE7。
DOM元素的起源也很重要。所有的节点都是服务器端提供的,还是将JSON发送给客户端并在JavaScript中创建树?我可以确认正确构建的JavaScript对象树可以非常有效地处理数千个节点,因此如果您的渲染方案是基于客户端的,并且所有节点都不会一次显示,那么实际的DOM将会更小。
真正的决策点将是往返。如果你一遍又一遍地重建一个复杂的页面,那么这可能是足够的理由将其分解为框架,以便所有的内容不需要一次又一次地通过电线发送。
错误,根本不是这样,使用Ajax并用您检索的HTML片段替换给定元素的内容。或者甚至更好,使用Ajax来获取JSON并用它构建HTML。 – Domenic 2010-09-25 21:17:37
@Domenic - 同意了,请参阅我对JSON和相关效率的评论。我关于框架的观点是,如果所有的HTML都是在服务器端生成的,并且无法更改模型,那么框架集或iframe可能会更快。 – 2010-09-25 21:38:34
“可能”是关键 - 尽管如此,这就是为什么我在我对原帖的评论中推荐测试的原因。看起来非常具体的实现是否使用iframe页面加载工具或Ajax + DOM插入最终会更快。也可能有挂钟或主观经验问题。 – Domenic 2010-09-26 17:46:17
- 1. 是否可以获取vuejs元素的DOM元素?
- 2. 提高网站的性能得分
- 3. DOM元素的GWT操作的性能价格是否真的很高?
- 4. 将大型IIAF分割为更小的函数是否可以提高性能?
- 5. SyntaxNet处理大量句子,GPU是否提高性能?
- 6. 是否有可能用React替换DOM元素?
- 7. 是否有可能用jquery替换div元素并更新dom?
- 8. 是否有可能确定dom元素何时进入视图?
- 9. 是否有可能具有不同长度的元组向量?
- 10. 较大的高速缓存大小是否总能提高性能?
- 11. 如果将DOM元素用于许多函数,它是否会提高将DOM元素分配给全局变量的性能?
- 12. 万交易 - 提高网站性能
- 13. 是否可以在元素的属性上插入jQuery变量?
- 14. HTML/CSS/JS:在将元素的大小附加到DOM树之前是否可以找到元素的大小?
- 15. 提供大量PDF的网站的可访问性问题
- 16. 是否可以提高“最大永久磁盘数量”限制?
- 17. xsd中的元素是否可以具有任意名称?
- 18. 提高网页的性能
- 19. 检测JavaScript对象是否具有引用DOM元素的某些属性
- 20. 规范化是否真的损害了高流量网站的性能?
- 21. 在查询中设置.readonly是否可以提高性能?
- 22. 输入接口是否可以提高性能?
- 23. Firebase - 缓存是否可以提高性能?
- 24. 分拆包含函数是否可以提高PHP性能?
- 25. 它是否可以提高性能并降低级别类型?
- 26. Android。如何提高具有大量资源的项目的Eclipse性能?
- 27. iframe中网站的高度
- 28. 将HTML 4重新分解为HTML5可以提高网站的性能吗?
- 29. 并发性可以提高性能吗?
- 30. 是否有任何工具可以为我们提供网站驱动代码
为什么不自己运行一些测试?这似乎很可能对您的应用程序非常具体。 – Domenic 2010-09-25 18:57:42