首页 文章

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

提问于
浏览
2

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

2 回答

  • 3

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

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

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

    • Storage polyfill 雷米夏普

    • Amplify.js 通过appendTo HTML5 API与HTML4浏览器(包括IE6)的回退

    • RealStorage HTML5 API是整体API的子集
      YUI团队

    • YUI3 CacheOffline

    • Persistence.js 异步Javascript对象 - 数据库映射器

    • YDN-DB 易于使用的数据包装器,用于构建在闭包库之上的IndexedDB,WebSql和localStorage .

  • 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由您真正维护:) .

相关问题