2

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

4

2 回答 2

3

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

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

根据我的经验,我建议使用包装库来降低未来浏览器更改的风险。下面给出了几个流行的库

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

我迟到了几年,但考虑到自从提出这个问题以来客户端浏览器领域的发展,我想我会加两分钱。

在提出这个问题时,IndexedDB 是唯一的替代 WebSQL,尽管当时对它的支持参差不齐。虽然今天前者仍然适用,但后者不适用:现在,所有主要浏览器供应商都有 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 真正由您维护 :) 。

于 2016-07-10T17:36:17.450 回答