對於具有大量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