2013-01-23 59 views
0

我正在開發一個完全在一個頁面中的Web應用程序,它基於在網格中顯示一堆表格數據。數據庫中有大約30個不同的表格,用戶可以隨時要求其中的任何一個表格在屏幕上隨時顯示。大多數但不是全部的這些表格少於1000行。這些網格的數據被調用並通過ajax加載。通過ajax在後臺預加載多個大型數據集?

現在,我顯示登錄屏幕並立即預加載一些主表,以便用戶鍵入他們的用戶名和密碼時,它將加載初始網格。這實際上增加了用戶體驗,因爲他們在點擊查看其中一個數據網格後不必等待ajax調用。因此,我正在考慮更進一步。

我正在考慮讓ajax調用在後臺加載所有30個表。直到需要時纔會將它們添加到dom中,而是將其添加到數組中。否定的是我不知道用戶是否會在他們的會話中使用這些表的一半,但他們通常會根據用戶請求立即顯示這些表,並創建更好的用戶體驗。

所以,我的問題是,通過ajax調用在數組中存儲30個完整的數據表(大多數爲每個表約50至1000行)是個好主意,如果是的話,那麼獲取最好的性能(請記住我只是把它們放在數組中,而不是在預加載後將它們添加到dom中)?以下哪項是最好的辦法:

  1. 請在網頁加載時的每個表30 Ajax調用
  2. 請在頁面加載1個Ajax調用返回的所有表
  3. 讓像5 AJAX調用頁面加載像6張桌子
  4. 歪斜每個返回Ajax調用,所以我做了幾個,然後一旦完成,做一些更
  5. 一些其他的方法...
+0

這個問題的大部分答案取決於它們將如何加載。如果你有30個表格,他們有多少人可以用一個動作訪問? –

+0

你在這裏討論的總數據量是多少? –

+0

我會隨需求請求數據,而不是請求超過x個記錄的整個表,而只是根據需要請求數據的一個子集。 –

回答

1

我建議在一次調用中加載主表,然後再調用其餘表。主要問題是,如果您將所有內容一起批處理,那麼在整個AJAX請求完成之前,這些信息都不會提供給應用程序。因此,如果您在一次調用中加載所有內容,這可能需要一段時間,並且用戶完成登錄時主表不會準備就緒。

+0

對我有意義。這將調用降到最低限度,但確保首先加載重要的東西。 – dallin

1

這些表是否正在編輯或僅被查看?

如果上面的答案只能被查看,那麼您可能需要加載所有30個表(假設它們沒有任何包含BLOB數據的字段),並將它們存儲在應用程序的內存中而不是會話內存中。

如果表格將要被編輯,然後找出該用戶(組?)經常使用哪個表並預加載這些表。

同樣,我認爲您的初始里程碑已經足夠好了,我不確定我喜歡在會話中爲用戶加載可能的30,000行數據的想法。特別是因爲它有可能未被使用......如果數據庫中的數據發生變化,會發生什麼情況?是否要同步它?你怎麼知道它改變了?你打算輪詢數據庫嗎?看到開始出現的問題?

相關問題