2017-01-30 53 views
1

我想在localStorage中保留多個記錄。 存儲和檢索幾個小數據或一個大數據是否更高效?localStorage:單獨存儲數據VS一個大字符串?

例如,這樣的:

localStorage.setItem('id1', tally1); 
localStorage.setItem('id2', tally2); 

for(var i=0; i<tallyIds.length; i++){ 
    this.tallies.push(tallyIds[i], localStorage.getItem(tallyIds[i])); 
} 

或者這樣:

localStorage.setItem('tallies', '[{"id1": tally1}, {"id2": tally2}"]'); 
this.tallies = JSON.parse(localStorage.getItem('tallies')); 

我知道有些設備會自動從localStorage的清除一些數據定期。因此,單獨存儲每一個可能是有利的,在這種情況下可能只有一些丟失 - 但是如果全部存儲在一個大的字符串中,那麼如果/當設備決定清除它時,全部丟失。

但是,循環遍歷整個列表(只有幾百個項目)會變慢嗎?

+1

我做什麼,是根據應用程序的需要和對每個服務我做不同的對象。每個對象都與一個服務有關。該服務負責存儲和檢索數據。我只是使用服務而不是getItem和setItem來管理localstorage。並且它將對象的大小最小化爲需要一個服務。 – Shubhranshu

回答

1

幾乎可以肯定,您應該更喜歡將數據存儲爲單個鍵下的數組。如果清除localStorage,則獨立存儲標籤

a。不可能保存它們中的任何一個(cmd localStorage.clear(),例如將清除所有內容) b。可能會導致令人困惑的情況,如果您不確定所有數據是否完整無缺,或者只有一部分數據丟失。

另一方面,將數據存儲爲數組意味着您可以非常輕鬆地過濾,映射,排序和反轉它們。

1

您的特定情況下,它可能會更容易儲存在一個localStorage的鍵和值的 吻合(作爲一個大的字符串) 和使用JSON解析重建 你的對象,添加到它,然後字符串化它再次,它將是 比分解每個計數器不同的鍵更容易。

如果你沒有那麼多的數據層,你真的需要一個真正的 本地數據庫,如IndexedDB,那麼對於這種情況,單個密鑰和JSON字符串值可能是OK。