所有HTML5存储系统是否协同工作?

时间:2010-04-17 11:26:55

标签: html5 local-storage

虽然有很多关于html5的好东西,但我没有得到的一件事是redondant存储机制,首先是localstorage和sessionstorage,它们是键值存储,一个是应用程序的一个实例(“一个选项卡“),另一个适用于该应用程序的所有实例,以便他们可以共享数据。当你关闭浏览器并且大小有限(通常是5MB)时,两者都会被保存,这很好,如果我们停在那里,一切都会很好。

但是有一个“Web SQL数据库”,它具有与localstorage相同的安全系统,相同的大小限制,除了它的工作原理之外的所有内容都像/ sqlite一样,具有表和sql语法以及所有这些。

令人头疼的是,他们完全无法处理相同的数据!这不是访问数据的两种方式,这对于每个html 5应用程序来说真的是两个存储空间(默认情况下不是创建的,但是你仍然看到了我的观点)。

我想知道的是,这两种机制同时存在的原因是什么?或者他们只是看看sql和nosql运动来挑选最好然后去“拧它让我们加两个!” ?为什么不将本地/会话存储实现为web sql db中的表?

2 个答案:

答案 0 :(得分:5)

我认为本地存储是对cookie应该首先进行的正确改写。它具有非常简单的api和低采用率。

Web SQL是一项非常重要的任务,如果只保存一个简单的值,那将是一个非常痛苦的问题,因此它们具有非常不同的用例。 localstorage实际上是使用SQLite在WebKit中实现的,但是没有通过WebSQL公开。

会话存储无法在数据库内轻松实现,因为它实际上是在全局范围内,并且您不希望数据对其他选项卡可见。因为它是瞬态数据,所以通常不想存储批次,因此不需要事务和查询。

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

答案 1 :(得分:0)

我问自己同样的问题,这是答案,引自Chromium维基:

  

问:为什么选择LocalStorage?

     

答: LocalStorage本身就是一种生机勃勃的态度   并行性灾难,取决于   不管你是否愿意   实现“存储互斥”   在规范中描述。铬有   决定不实施它。 WebKit的   本身是单线程/进程(即   没有平行期)

资料来源: http://www.chromium.org/developers/design-documents/indexeddb

如果要在本地复制数据库结构以供脱机使用,则Web SQL非常有用。

但是在Firefox中不会实现Web SQL: http://us1.campaign-archive.com/?u=168bf22f976f5a68fe5770d19&id=6c2d73c957#standards

Mozilla,Microsoft和Oracle正在开发“IndexedDB”替代方案:http://www.w3.org/TR/IndexedDB/

在firefox中进行了正在进行的工作:https://wiki.mozilla.org/Firefox/Projects/IndexedDB

存储演示: