在客户端存储中,使用Web SQL数据库是否推荐?

11

这个使用场景是当客户端离线时希望应用程序能够存储数据。现在的问题是,是否建议使用Web SQL数据库(Chrome和Safari支持但是Firefox不支持),还是等待浏览器实现Indexed Database API?


我知道这有点晚了,但对于未来的项目,请尝试使用SequelSphere(www.sequelsphere.com)。它是一个支持SQL并将数据存储在本地持久性中的HTML5关系数据库引擎。它不使用WebSQL数据库,而是自己的SQL引擎。因此,它将在任何符合JavaScript标准的浏览器中工作。虽然它目前只支持本地存储,但SequelSphere最终将支持其他本地持久性引擎,如IndexedDB和File API。完全公开透明:我与SequelSphere公司有关系。 :) - John Fowler
5个回答

8

9个月后,这个问题被提出,“Web SQL数据库已经不再进行积极维护,Web应用程序工作组也不打算进一步维护它”:http://en.wikipedia.org/wiki/Web_SQL_Database

如果你正在开发明年发布的解决方案(尤其是移动解决方案),则IndexedDB是更好的选择。如果你需要现在就有覆盖范围(除Firefox之外),那么你可以使用Web SQL Database或将JSON对象序列化到LocalStorage中。


1
我目前采用了“将JSON对象序列化到LocalStorage”的方法。一旦所有主要浏览器供应商都实现IndexedDB,我肯定会重新考虑这种方法。目前我发现这个链接很有用:http://goo.gl/kwaAU - rnella01

2

这是一个旧的帖子,但我想发表我的看法。截至今天,我们正在使用现有的Web DB API为Safari开发iOS Web应用程序。我还没有看到任何迹象表明Safari将在未来版本中放弃它,但由于这些应用程序必须在iPad上使用,所以我们正在冒着一定风险,如果必要的话,我们将准备好转移到IndexedDB。


最新版本的浏览器似乎支持IndexedDB了,现在是时候尝试一下并分享一些经验了... - rnella01
@mella01,当前移动浏览器不支持indexeddb。唯一的例外是黑莓10(真是奇怪!)。参考:http://caniuse.com/#search=indexeddb - oligofren

1

看起来WebSQL即将被IndexedDB所取代。Firefox和Internet Explorer没有计划支持WebSQL,他们想要在Firefox 4和IE9中实现IndexedDB。Chrome正在忙于实现它,我相信Opera和Safari也会效仿。

目前,所有支持HTML5的浏览器(以及一些IE版本)都支持LocalStorage,这是一个简单的键/值数据库,只能存储字符串,因此,如果您需要更多结构化的存储功能,您将不得不等到今年年底(大约)才能获得广泛的IndexedDB支持。


我正在寻找一种结构化存储方式,CouchDB 可能是目前的选择。 - rnella01
1
CouchDB不会在浏览器中运行(据我所知),它是一种在服务器上运行的数据库技术,因此无法与HTML5离线存储一起使用。 - Sunday Ironfoot
看起来WebSQL的时代已经过去,将被IndexedDB支持所取代。这是真的吗?我看到了一些关于这个话题的讨论...http://sites.google.com/a/chromium.org/dev/developers/design-documents/indexeddb https://lists.webkit.org/pipermail/webkit-dev/2010-January/011409.html...但Google只在1月25日宣布了Chrome Web SQL的支持:http://blog.chromium.org/2010/01/more-resources-for-developers.html...而Safari自Safari 3.1和iPhone OS 2.0以来一直支持Web SQL:http://bit.ly/c7z1Pe - Sam Dutton
Webkit浏览器(Chrome和Safari)已经支持WebSQL一段时间了,并且将在相当长的一段时间内继续包含它(一旦添加了某些东西,由于向后兼容性问题,需要很长时间才能删除它)。这样看来,IE和Firefox都不会实现WebSql,而这两个浏览器在全球市场份额中占据最大的地位,因此可以排除WebSql。一个临时解决方案可能是在您的Web应用程序上同时拥有Sql和IndexedDB代码,但这只是一个非常临时的解决方案,WebKit浏览器(以及Opera)最终都将实现IndexedDB。 - Sunday Ironfoot

1

我认为在这种情况下(在线和离线混合),人们需要考虑数据同步(在本地存储的离线工作成果与主流在线情况下预计存储在服务器上的大量工作之间)。显然,两个选项都没有解决这个问题。


在我们的情况下,我们建立了一个JavaScript框架,负责在用户在线登录系统时进行同步。 - rnella01

0
如果你需要Firefox支持,那显然是不行的。

所以,如果你的目标是移动互联网设备(智能手机),那么使用Web SQL是可以的,因为大多数平台都是基于WebKit或IE。 - Marc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接