2011-12-18 37 views
1

我必須處理使用ajax從服務器檢索到的大量數據並將其存儲在JavaScript中。我目前正在使用一個數組來存儲所有的數據。這就是我得到的數據,並將其存儲在JavaScript:如何在javascript中存儲大量數據

var buffer=new Array(); 
//when each ajax returns 
buffer=buffer.concat(JSON.parse(ajaxReq.responseText)); 

有在我的腦海的兩個問題:

  1. 是使用數組來存儲所有的數據有效,是否有溢出問題擁有100萬行數據?
  2. concat表現如何?這怎麼能在這裏優化?

感謝您的任何意見。

+1

此問題可能會有用:http://stackoverflow.com/questions/4833480/is-this-asking-too-much-of-a-browser –

+0

我會避免它,因爲你沒有任何想法各種客戶端機器將做什麼或可以處理什麼。我想不出在瀏覽器*中擁有那麼多數據*的正當理由。我會設置一個方法將處理卸載到服務器。 –

回答

3

它看起來像是你的整個數據庫轉儲到客戶端在每個頁面加載,以便在特定頁面加載時,他可能或可能不必等待快速ajax響應。老實說,這是我聽說過的最瘋狂的事情,希望你能看到它。

即使您的用戶不需要等待很長時間的小型ajax調用(請參閱google autosuggest),也必須讓他們等待一百萬個數據庫行傳輸並加載到內存中頁面載入甚至更糟的用戶體驗。

只有當您的數據適合localStorage(5MB)時,您所做的只是可行的,但它可能不適用。

+0

更不用說客戶端幾乎不能處理那些數據上的操作,這些操作會降低整個體驗,而不是從服務器請求數據時(間歇地)。 –

+0

好,,, 5MB是一個很好的數字要知道。謝謝。 – bingjie2680

8

我知道我有風險,但是:「我如何在JavaScript中存儲100萬行」的唯一有效答案是「不要」。

+0

謝謝,我明白你的意思。但ajax檢索需要時間。用戶在服務數據時會觀察到中斷點。我想創造良好的用戶體驗。 – bingjie2680

+0

我同意。 @ bingjie2680,你最好找到一種方法來緩存和調用你所需要的儘可能高效的方法。 –

+2

好吧,我不會在JavaScript數組中存儲一百萬的任何東西。所以我會確定。解決這個問題的另一種方式 –