2014-02-16 33 views
1

我有一個網絡應用程序,可以在啓動時獲取幾十個項目。所有這些項目都是JSON,小於1kb。使用JSON對象與localStorage/sessionStorage/IndexedDB/WebSQL /等。

現在有很多存儲選項可以在問題中看到。

我正在考慮將這些對象存儲在瀏覽器JS中的一個變量中。我真的不明白爲什麼我想要使用這些瀏覽器存儲中的任何一個?

那麼,使用任何基於瀏覽器的存儲而不是JS內的變量是什麼原因。 可能來自某個數據大小,最好使用瀏覽器存儲,例如從100kb開始,最好不要使用JS變量。

var myModel = {}

注意

用戶進入應用程序,他將得到來自服務器的新的內容每次。內容對於緩存來說太實時了。 `

+0

您提到內容需要始終保持新鮮,那麼爲什麼您會考慮存儲或緩存它?你實際上在浪費帶寬,你爲什麼不從一個返回json的web服務中獲取? –

+0

我只是擴大了我的理解。我現在知道我不需要這些! – xrDDDD

回答

1

localStorage和sessionStorage正在解決一個緩存問題;把它們當作cookie。你說你不想緩存,所以你可以忽略它們。

JavaScript對象的行爲基本上與O(1)查找表類似(請參閱How is a JavaScript hash map implemented?,並確保您閱讀了前兩個答案,因爲兩者都有用處),並且沒有我知道的最大內存限制或另一種解決方案成爲更好的選擇的一點

我可以想到的是,如果您需要在字段上進行O(1)查找,您需要額外的將數據插入到IndexedDB中,這不是您正在使用的對象鍵。

+0

這就是我想聽到的,謝謝!要閱讀! – xrDDDD

7

localStorageglobalStoragesessionStorage

這些功能在已實施的「網絡存儲」瀏覽器準備好了,他們都是指一種HashMap中的,字符串鍵和字符串值之間的映射。但生活是不同的。一旦激活頁面被關閉sessionStorage將被清洗,但localStorage是永久性的。(MDN DOM Storage guide

  • 有一個點約globalStorage的,這是它是過時的,因爲壁虎1.9.1(火狐3.5)和不支持自從Gecko 13(Firefox 13)以來,我們應該使用localStorage。這兩者之間的區別僅僅是HTML5範圍支持(方案+主機名+非標準端口)。

這個對你有用:

- 分享你的不同頁面之間你的對象,在您的網站。

不適用的編程。

-Caching大對象

-Or每當你需要一個本地永久存儲


索引資料

索引資料是用於存儲大量數據(例如,DVD的在借貸庫目錄)和應用程序不要的應用中是有用t需要持續的互聯網連接才能工作(例如,郵件客戶端,待辦事項列表和筆記本)

基於此報價從MDN,你可以很容易地找到你的答案出來,用IndexedDB,如果你不知道IndexedDB是否對您有用與否有關,只是回答這些問題:

你存儲大量的客戶端數據?如果是,請考慮使用它。

您的應用需要離線啓用嗎?如果是,請考慮使用IndexedDB。

您的應用需要持續互聯網連接嗎?如果是,則基於其他因素,它仍然是一個選項。


所以比至於你不需要它脫機工作等,我猜,因爲當你說:

內容過於實時緩存。

這些有一些功能,如共享對象和管理大量的數據,你應該決定。

+0

爲什麼我以前不知道sessionStorage?它就像我的所有網站頁面的超級全局變量。這可以幫助我完成許多事情。感謝您的信息。 。 – MJoraid

+0

儘管這不是答案。這是**問題**中使用的不同瀏覽器存儲的非常好的解釋! – xrDDDD