使用Web SQL数据库的客户端存储

时间:2012-07-24 15:59:34

标签: javascript html5 local-storage web-sql

我的应用程序使用webSQL的客户端数据库存储来存储用户的信息。我听说浏览器开始转向webSQL。目前只有chrome,safari和Opera支持它。因为IE和Firefox不支持webSQL,所以如果用户使用这些浏览器,我会使用cookie来存储信息。但是,cookie不是很安全,很难存储大量数据。我的问题是,现在有没有更好的选择类似于所有浏览器支持的javascript API?感谢。

2 个答案:

答案 0 :(得分:3)

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

请查看以下演示文稿,以便更好地理解 http://html5-demos.appspot.com/static/html5storage/index.html#slide1

根据我的经验,我建议使用包装库,以降低未来浏览器更改的风险。下面列出了很少的流行图书馆

  1. 存储polyfill 作者:Remy Sharp
  2. Amplify.js 通过appendTo HTML5 API和HTML4浏览器的后备 (包括IE6)
  3. RealStorage HTML5 API是整体API的子集
  4. YUI团队
  5. YUI3 CacheOffline
  6. Persistence.js 异步Javascript对象 - 数据库映射器
  7. YDN-DB 在封闭库之上构建IndexedDB,WebSql和localStorage的易于使用的数据库包装器。

答案 1 :(得分:2)

我迟了几年,但鉴于此问题被问到,客户端浏览器空间的发展,我想我会加上我的两分钱。

当问到这个问题时,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由您自己维护:)。