【问题标题】:Client Side Storage with Web SQL Database带有 Web SQL 数据库的客户端存储
【发布时间】:2012-07-23 00:03:21
【问题描述】:

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

【问题讨论】:

  • 如果您正在寻找真正跨浏览器的东西,那么您暂时不走运(直到 HTML5 正式发布)。 LocalStorage 最终应该可以完成这项工作,但在浏览器中模拟 RDBMS 可能有点矫枉过正。在客户端存储任何东西本质上是不安全的,因为它在客户端的控制之下。

标签: javascript html local-storage web-sql


【解决方案1】:

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

在提出这个问题时,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 真正由您维护 :)。

【讨论】:

    【解决方案2】:

    我认为 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. YUI3 CacheOffline,YUI 团队
    5. Persistence.js 异步 Javascript 对象数据库映射器
    6. YDN-DB 易于使用的 IndexedDB、WebSql 和 localStorage 数据库包装器构建在闭包库之上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-16
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多