2012-07-24 75 views
1

我的应用程序使用客户端数据库存储使用webSQL为用户存储信息。我听说浏览器开始转向webSQL。目前只有Chrome,Safari和Opera支持它。由于IE和Firefox不支持webSQL,我正在使用cookie来存储信息,如果用户使用这些浏览器。然而,Cookie不太安全,并且很难存储大量数据。那么我的问题是,现在是否有更好的选择类似于所有浏览器支持的JavaScript API?谢谢。客户端存储与Web SQL数据库

+0

如果你正在寻找一些真正跨浏览器的东西,那么暂时你运气不好(直到HTML5官方无论如何)。 LocalStorage最终应该完成这项工作,但在浏览器中模拟RDBMS可能有点矫枉过正。存储_anything_客户端本质上是不安全的,因为它处于客户端的控制之下。 – Widor 2012-07-24 16:22:17

回答

2

我认为IndexedDB将是您的选择,它是一个基于对象的数据存储。它目前由Chrome,Firefox和IE 10支持,将来也会支持它。

看一看下面的介绍,以更好地了解 http://html5-demos.appspot.com/static/html5storage/index.html#slide1

从我的经验,我建议使用一个包装库只是为了减少在浏览器的未来变化的风险。很少有流行的库如下

  1. 寄存给出填充工具通过雷米夏普
  2. Amplify.js通过appendTo HTML5 API与回退的HTML4浏览器 (包括IE6)
  3. RealStorage HTML5 API是一个子集整体API
  4. YUI3 CacheOffline由YUI团队
  5. Persistence.js异步Javascript对象数据库映射
  6. YDN-DB易于使用的数据库包装器是IndexedDB,和的WebSQL建立的localStorage封上库顶。
0

我已经晚了两年,但考虑到这个问题被问到后,客户端浏览器空间的发展,我想我会增加我的两分钱。

当问这个问题的时候,IndexedDB是唯一的替代WebSQL,尽管当时对它的支持很不明显。虽然今天前者依然如此,但后者并没有:现在,all of the major browser vendors have an implementation of IndexedDB

考虑到IndexedDB是目前保持在W3C标准轨道上的唯一数据库,它几乎是本地客户端数据库的唯一选择。

但是在深入了解IndexedDB之前,您应该了解几件事。首先,它是一个非关系型文档存储,并且本身不支持SQL。第二个是它的API至少可以说是笨拙的。

鉴于这些事情,我建议你查看BakedGoods。有了它,将一个或多个数据项在IndexedDB的数据库,例如,是简单的:

bakedGoods.set({ 
    data: [{key: "key1", value: "value1"}, {key: "key2", value: "value2"}], 
    storageTypes: ["indexedDB"], 
    function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){} 
}); 

当然,如果你是某种形式的受虐狂,你可以忽略我的建议和处理原始API。但不要说我没有提醒你!

为了完全透明,BakedGoods由您真正维护:)。