围绕网络存储的Javascript API包装?

pat*_*rit 8 javascript web-storage web-sql indexeddb

是否存在跨浏览器的jquery,就像可用的各种Web存储系统上的包装器API抽象一样?

dum*_*ter 9

localStorage(又名"web存储")实际上与Web SQL或IndexedDB不具有可比性,因为它在空间上受到严格限制并且是同步的(读取:冻结浏览器的UI,因为它确实是狗屎).因此,我在帖子的其余部分忽略了localStorage.但是如果你只需要一点点存储空间,你可以直接使用localStorage,因为它得到了广泛的支持,或者像其他帖子所建议的那样使用草坪椅,这一点得到了更广泛的支持.

所以我们留下了Web SQL和IndexedDB.无论好坏,Web SQL都是一种死胡同的技术.没有人在制定规范,没有人正在开发新的实现.IE和Firefox永远不会支持它,它在其他浏览器中已被弃用,最终可能会被删除.但目前有一些浏览器支持它(Chrome,Opera,Safari),所以从理论上讲,如果不支持Web SQL的其他浏览器有其他选择,它可以在库中使用.

遗憾的是,IndexedDB在浏览器中得不到很好的支持.Firefox有很好的实现; Chrome有点落后但追赶.您可以使用此IndexedDB Polyfill在任何支持Web SQL的浏览器中获得IndexedDB支持,理论上应该涵盖除IE之外的所有最新/流行的浏览器.

啊,IE.它总是归结为IE,不是吗?事实上,在IE中没有合理的方法可以像IndexedDB或Web SQL那样进行本地存储.IE 10将支持IndexedDB.每当人们停止使用IE 9及更低版本时,IndexedDB可能会在所有其他浏览器中获得极好的支持,因此您将能够在其上使用IndexedDB API或某些库.在那之前......好吧,你运气不好.


sab*_*ker 7

Wrappers支持多种存储实现

小袋DB

localForage

lawnChair

YDN - DB

IndexedDB polyfill over WebSQL

IndexedDB Shim

IndexedDB Polyfill

如果您只想存储少量数据,那么只需将Web存储更简单的包装就足够了.如果您需要更多存储空间,则需要放弃Web存储的概念并使用indexedDB polyfill.但是这种polyfill的缺点是索引可能无法正常工作,特别是对于多个索引,并且在没有本机indexedDB(iOS)的移动浏览器中可能性能较差.如果索引是至关重要的,那么对于其二级索引,Pocket DB看起来是一个很好的解决方案.如果iOS不是目标,你可以继续使用原生索引数据库作为其支持几乎在苹果园外的其他地方.


网络存储

模式: 键值对 大小: 2.5MB - 5MB 可扩展性: 大型/复杂数据 性能不佳搜索:没有索引或其他方式的搜索性能差 索引: 无索引可用 兼容性: 支持所有现代浏览器,包括移动浏览器 未来证明: 支持应该保持很长时间.规范与w3c分开,并作为自己的规范存在.W3c可能会使用索引数据库执行所有操作


的WebSQL

模式: 关系数据库 大小: 默认约5MB要求用户扩展到 10,50,100,500 MB 可伸缩性:使用关系数据库概念,因此可以很好地扩展.与Web存储相比,大数据具有良好的性能. 搜索:在RDBMS中使用索引进行良好的搜索性能. 索引: RDBMS中可用的索引 兼容性: 基于webkit的浏览器支持,包括Chrome,Safari和iOS Safari等移动浏览器.微软和Firefox不支持并决定永远不支持,因为规范依赖于非标准SQL lite.同时,Web SQL恰好是iOS设备和Safari中唯一可用的可扩展解决方案. 未来证明: Web SQL不是未来的证明.截至2011年,该规范已不再维护和弃用.此外,除Apple之外的大多数供应商已开始转向索引数据库.


IndexedDB的

模式: 索引表系统 大小: 默认~5-50MB要求用户扩展. 可伸缩性: 每个数据库可以拥有尽可能多的数据库和多个存储.可以轻松扩展. 搜索:非常好的搜索性能,其技术植根于索引. 索引: 基于索引设计自身. 兼容性: Chrome,Firefox,IE 10以及其他现代浏览器均支持.缺少的供应商只是Apple.Apple仍未在Safari及其iOS Safari上实现索引数据库. 未来证明: 索引数据库规范是特别为客户端存储设计的Web持久性的当前方向.这应该很快就会淘汰Web SQL和本地存储,因为它具有这两个规范的强大功能.


ste*_*els 6

Store.js应该适合你.它使用localStorage.对于IE6和IE7,它使用userData行为.

它的API很简单:

store.set('myage', 24)
store.get('myage') === 24
Run Code Online (Sandbox Code Playgroud)


Rob*_*ods 2

有草坪椅...我已经建议过几次了,但还没有长期使用它:

http://brian.io/lawnchair/