什么时候应该使用Web SQL而不是IndexedDB?

42
最近,我了解到浏览器提供的Web SQL和IndexedDB API。Web SQL和IndexedDB有哪些使用场景?在什么情况下应该选择使用其中之一?

10
WebSQL已经被弃用。 - Josh
在这种情况下,请告诉我一些IndexedDB的用例以及我们应该在哪里使用它?@Josh - Utsav Sinha
当您想要在浏览器中存储数据,并且希望使用一组可以轻松查询的对象集合,而使用localStorage不足以满足需求时。 - Josh
2
为什么这个问题被关闭了?在我看来,像这样的问题仍然可以通过呈现基于事实的正反面和两种解决方案的最佳用例来回答,以便用户可以根据自己的用例进行选择。因此,我不确定这是“基于观点”的。 - kabirbaidhya
2个回答

47

根据 https://www.w3.org/TR/webdatabase/,Web SQL已被废弃。

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

localStorage 相反,IndexedDB 是异步的,因此更为高效。它支持索引以实现比 localStorage 更有效的查询,后者仅是一个键值存储。然而,如果您的需求很简单,那么 localStorage 可能是更好的选择。

这里 有关于不同 web 存储选项的讨论。 这里 是关于如何在渐进式 Web 应用中使用 IndexedDB 的教程。


2
IndexedDB应该更具性能:https://nolanlawson.com/2015/09/29/indexeddb-websql-localstorage-what-blocks-the-dom/ - gdbj

19

为什么不使用Web SQL?

自2010年11月以来,Web SQL数据库规范已被弃用。浏览器厂商不鼓励支持该技术并且重要的是任何阅读本文的人都应该了解这一点。您可以在其维基百科页面上了解更多关于Web SQL的内容。现在回到你问题的另一个重要部分。

何时使用IndexedDB API?

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

IndexedDB的主要用例之一是创建离线数据库,该数据库将在联机后与实际数据库同步。这允许应用程序在离线时继续工作并保留状态。一个曾经著名的例子是Wunderlist,您可以即使没有网络时添加和编辑任务。这些操作进入同步队列,在网络再次可用时处理和清空。这就是很多待办事项清单应用程序在离线时的工作方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接