首页 文章

可查询 client-side 存储[1]

提问于
浏览
16

可查询的 client-side 数据存储有哪些解决方案?这将用作临时缓存来执行基本操作,例如在客户端中对 user-selected 日期范围进行排序和聚合

我找到了一些有希望的候选人,但我不确定最好的选择是什么

还有一些其他 less-optimal 选项:

  • HTML5 localstorage/sessionstorage(需要在此基础上构建查询层...如 lawnchair 或 localstoragedb)

  • IndexedDB(浏览器兼容性)

  • 谷歌齿轮(停产)

  • WebSQL(规范已停止)

我很想知道你对这些选择的经历/如果还有其他我错过了

4 回答

  • 2

    你可以将jStorageJLINQ结合使用

  • 1

    您是否尝试过我的开源库https://bitbucket.org/ytkyaw/ydn-db/wiki/Home。它支持 IndexedDB,WebSQL 和 localStorage。查询是 NoSQL 样式,i.e,索引基键范围查询。多索引查询需要使用复合索引或密钥连接算法。目前有 SQL 的基本查询接口,随着时间的推移会更好。

    Large-scale 网络应用程序,大多数是 CRM,在生产中使用库。

  • 1

    我编写了两个简单的 API 来处理 Storage API。其中一个是一个包装器,可以轻松使用本地和会话存储:https://github.com/chambs/minidb/

    就像是:

    minidb.local.set('name', 'Willian');

    minidb.local.get('name'); //gives you "Willian"

    minidb.session.set('userData', {id:333, name: 'Joseph'});

    minidb.session.get('userData'); //gives that object

    另一个是仅基于 localStorage API 的命名空间(无会话)。基本上,您可以添加分组到命名空间中的“行”,以便您可以根据这些命名空间分隔数据:https://github.com/chambs/zonjs

    就像是:

    zon('user').insert({name: 'Willian', email: 'o.chambs@gmail.com'});

    zon('user').del('8739874397494');

    其中'user'是您定义的命名空间。对于相同的 origin/domain,可以拥有任意数量的命名空间

    希望它有帮助:)

  • 0

    我已经将草坪椅用于我工作的小型内部工具,整体经验非常积极。

    我在这个过程中学到的东西:Douglas Crockford 的JSON-js cycle.js在 double-linked 对象上做 save/get 时解决了我的 stringify 问题。

    有人在 grasschair github repo 上发布了一个问题,描述了同样的问题并给我带来了很多麻烦。 https://github.com/brianleroux/lawnchair/issues/105

相关问题