最近,我遇到了浏览器提供的 Web SQL 和 IndexedDB API。Web SQL 和 IndexedDB 的用例是什么?什么时候应该使用其中一个?
2 回答
根据https://www.w3.org/TR/webdatabase/不推荐使用 Web SQL 。
如果您IndexedDB
需要存储未存储在服务器端的结构化客户端特定数据,或者您不想每次都从服务器请求,则可以使用。
与 , 相对的localStorage
也是IndexedDB
异步的,因此它的性能更高。它支持索引,从而比localStorage
简单的键值存储更有效地查询。但是,如果您的需求很简单,localStorage
可能是更好的选择。
为什么不是 Web SQL?
自 2010 年 11 月起,Web SQL 数据库规范已被弃用。不鼓励浏览器供应商支持这项技术,阅读本文的任何人都必须了解这一点,这一点很重要。您可以在其 Wikipedia 页面上阅读有关 Web SQL 的更多信息。现在回到问题的另一个重要部分。
何时使用 IndexedDB API?
您可以使用 IndexedDB 存储任何 JavaScript 类型的数据,例如对象或数组,而无需对其进行序列化。针对数据库的所有请求都是异步的。浏览器的实现允许您设置成功或错误发生时的回调。此实现的现代抽象允许您使用 Promise 代替。
IndexedDB 的主要用例之一是创建一个离线数据库,一旦在线,它将与实际数据库同步。这允许应用程序在脱机时继续工作并在重新加载后保持不变。一个现已过时的著名示例是 Wunderlist,即使在离线时您也可以添加和编辑任务。这些操作进入一个同步队列,当网络再次可用时,该队列被处理并清空。这就是许多待办事项列表应用程序在离线时的工作方式。