27

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

4

2 回答 2

34

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

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

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

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

于 2018-04-22T05:10:33.843 回答
12

为什么不是 Web SQL?

自 2010 年 11 月起,Web SQL 数据库规范已被弃用。不鼓励浏览器供应商支持这项技术,阅读本文的任何人都必须了解这一点,这一点很重要。您可以在其 Wikipedia 页面上阅读有关 Web SQL 的更多信息。现在回到问题的另一个重要部分。

何时使用 IndexedDB API?

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

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

于 2020-02-19T17:23:47.943 回答