什么时候应该使用 Websql 和 IndexedDB? [关闭]

Posted

技术标签:

【中文标题】什么时候应该使用 Websql 和 IndexedDB? [关闭]【英文标题】:When should I use Web SQL verus IndexedDB? [closed] 【发布时间】:2018-03-07 05:29:49 【问题描述】:

最近,我遇到了浏览器提供的 Web SQL 和 IndexedDB API。 Web SQL 和 IndexedDB 的用例是什么?什么时候应该使用其中一个?

【问题讨论】:

websql 已弃用 在这种情况下,请告诉我一些 IndexedDB 的用例以及我们应该在哪里使用它? @乔什 当您想在浏览器中存储数据,并希望使用可以轻松查询的对象集合以及使用localStorage 不够的地方 【参考方案1】:

https://www.w3.org/TR/webdatabase/ 不推荐使用 Web SQL。

如果您需要存储未存储在服务器端的结构化客户端特定数据,或者您不想每次都从服务器请求,则可以使用IndexedDB

localStorage 不同,IndexedDB 是异步的,因此性能更高。它支持索引,从而比localStorage 更有效地查询,localStorage 只是一个键值存储。但是,如果您的需求很简单,localStorage 可能是更好的选择。

Here 是一个讨论不同网络存储选项的链接。 Here 是关于如何将 IndexedDB 用于渐进式 Web 应用的教程。

【讨论】:

IndexedDB 应该更高效:nolanlawson.com/2015/09/29/…【参考方案2】:

为什么不使用 Web SQL?

自 2010 年 11 月起,Web SQL 数据库规范已被弃用。不鼓励浏览器供应商支持这项技术,阅读本文的任何人都必须了解这一点,这一点很重要。你可以read more about Web SQL on its Wikipedia page。现在回到问题的另一个重要部分。

何时使用 IndexedDB API?

您可以使用 IndexedDB 存储任何 javascript 类型的数据,例如对象或数组,而无需对其进行序列化。针对数据库的所有请求都是异步的。浏览器的实现允许您设置成功或错误发生时的回调。此实现的现代抽象允许您改用 Promise。

IndexedDB 的主要用例之一是创建一个离线数据库,一旦在线,它将与实际数据库同步。这允许应用程序继续离线工作保留过去的重新加载。现在已死的famous example of this is Wunderlist,即使在离线时也可以添加和编辑任务。这些操作进入一个同步队列,当网络再次可用时,该队列被处理并清空。这就是许多待办事项列表应用程序在离线时的工作方式。

【讨论】:

以上是关于什么时候应该使用 Websql 和 IndexedDB? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch & Tire:使用映射和 to_indexed_json

WebSQL 是不是支持主键?

WebSQL

websql操作类封装

websql操作类封装

indexed database IndexedDB