2011-09-19 60 views
1

我的問題是關注網頁的性能。我需要創建一個樹形視圖來顯示大數據(10,000)節點。因爲它使用Table標記,所以asp.net reeeview的方式呈現自身對性能不太好。我創建了一個自定義控件,使用div和span構建樹視圖。我能做到這一點通過2種方法:Asp.net - 使用json從服務器vs創建html

  1. 創建一個自定義控制,其中我將覆蓋渲染,把我自己的HTML這將讓在頁面上。這會在連接速度較慢時影響性能。但其他我想,性能將被視爲瀏覽器只會渲染它。沒有JS運行。

  2. 創建一個json對象並在頁面上呈現它(在這種情況下,頁面大小會比上面的頁面小)。但IE6-8不支持JavaScript硬件加速器,因此需要時間運行js來創建對象。

所以我的問題是哪一個會更好?我的用戶有3 mbps的速度,因此速度無關緊要。

+0

這是一個具有10,000個節點的父節點嗎?或者你有可能顯示10,000個節點?如果它是嵌套節點,我會選擇#2。 –

回答

0

這不僅是帶寬的問題。但是這樣的大小會影響客戶端的內存泄漏。 我會創建一個單獨的Web方法,返回JSON,並將構建樹使用一些JavaScript組件,如ExtJs

+0

再次使用table/tr和td進行渲染。這將使它再次慢IE8 – Ankit

+0

請檢查他們的演示,這是驚人的http://dev.sencha.com/deploy/ext-4.0.2a/examples/tree/treegrid.html –

+0

再次相同。它的懶惰加載,我不能使用 – Ankit

2

那麼,除非用戶是rainman,這是非常不可能的,他會一眼分析10000個節點,所以爲什麼不要讓這些節點按需加載(如果樹非常深 - 加載節點時擴展,如果樹很長 - 加載滾動或平滑)?
Telerik演示示例:http://demos.telerik.com/aspnet-mvc/treeview/ajaxloading

+0

用戶希望看到它在他最後一次查看時的狀態。展開的展開式展開和摺疊依然崩潰。所以懶加載是不可行的 – Ankit

+0

那麼,這可能需要更復雜的實現,但我的報價應該仍然有效 - 你應該只加載,這是目前可見的。 – Giedrius

+0

這個要求恰恰相反。一口氣展示。 – Ankit