2010-04-17 29 views
4

雖然有很多關於html5的好東西,但我沒有得到的是redondant存儲機制,首先是localstorage和sessionstorage,它們是關鍵值存儲區,一個用於應用程序的一個實例(「one標籤「),另一個適用於該應用程序的所有實例,以便他們可以共享數據。當你關閉瀏覽器並且尺寸有限(通常爲5MB)時,兩者都會保存,如果我們停在那裏,那很好,一切都會很好。是否所有的HTML5存儲系統一起工作?

但是接下來是「Web SQL數據庫」,它具有與本地存儲相同的安全系統,相同的大小限制,除了工作方式相同的所有內容,例如/ sqlite,使用表和sql語法以及所有這些。

而且令人失望的是,他們根本無法使用相同的數據!這不是訪問你的數據的兩種方式,對於每個HTML 5應用程序來說,這實際上是兩個存儲空間(默認情況下不是創建,但仍然可以看到我的觀點)。

我想知道的是,這兩種機制同時存在的原因是什麼?或者他們只是看着sql和nosql運動來挑選最好的,然後去「擰它讓我們加上!」 ?爲什麼不在web sql數據庫中實現本地/會話存儲?

回答

5

我的看法是,本地存儲是一個適當的重寫餅乾應該首先完成的方式。它有一個非常簡單的API和採用低障礙。

Web SQL是相當繁重的工作,對於只保存一個簡單的值會產生嚴重的困難,因此它們有着非常不同的用例。 localstorage實際上是在WebKit中使用SQLite實現的,但不是通過WebSQL公開的。

會話存儲無法在數據庫中輕鬆實現,因爲它在全局範圍內有效,並且不希望數據對其他選項卡可見。因爲它是暫時的數據,所以你通常不會想要存儲很多東西,所以不需要事務和查詢。

參見: http://www.pubbs.net/200904/webkit/28373-webkit-dev-need-help-making-windowlocalstorage-span-processes.html

0

我問自己同樣的問題,這裏就是答案,從鉻維基引用:

問:爲什麼這個在localStorage的?

答:localStorage的本質上是猥褻或 並行災難,這取決於你 是否願意 實現在規範中描述的「存儲互斥」 。鉻有 決定不實施它。 WebKit的 本身是單個線程/進程(即 沒有排比句點)

來源:如果你想在本地複製數據庫的結構脫機使用 http://www.chromium.org/developers/design-documents/indexeddb

的Web SQL可能是有用的。

但網站SQL不會在Firefox中實現: http://us1.campaign-archive.com/?u=168bf22f976f5a68fe5770d19&id=6c2d73c957#standards

的Mozilla,微軟和甲骨文都對 「IndexedDB的」 替代工作:正在進行http://www.w3.org/TR/IndexedDB/

工作在Firefox:https://wiki.mozilla.org/Firefox/Projects/IndexedDB

存儲演示:

相關問題