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

时间:2012-07-28 23:42:11

标签: javascript web-sql indexeddb web-storage

是否存在跨浏览器的jquery,比如various web storage systems可用的包装器API抽象?

5 个答案:

答案 0 :(得分:9)

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

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

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

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

答案 1 :(得分:7)

Wrappers支持多种存储实施

Pouch DB

localForage

lawnChair

YDN - DB

基于WebSQL的IndexedDB polyfill

IndexedDB Shim

IndexedDB Polyfill

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


网络存储

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

完成所有操作

的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之外的大多数供应商已开始转向索引数据库。


索引资料

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

答案 2 :(得分:6)

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

它的API很简单:

store.set('myage', 24)
store.get('myage') === 24

答案 3 :(得分:2)

有草坪......我已经有过几次建议,但没有详细说明:

http://brian.io/lawnchair/

答案 4 :(得分:2)

YDN-DB,它为IndexedDB,WebSQL和localStorage提供跨浏览器API。它还有JQuery插件。