已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新问题,以便editing this post可以使用事实与引用来回答.
两年前就关门了。
Improve this question
最近,我遇到了浏览器提供的Web SQL和IndexedDB API。Web SQL和IndexedDB的用例是什么?什么时候应该优先使用其中一个?
已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新问题,以便editing this post可以使用事实与引用来回答.
两年前就关门了。
Improve this question
最近,我遇到了浏览器提供的Web SQL和IndexedDB API。Web SQL和IndexedDB的用例是什么?什么时候应该优先使用其中一个?
2条答案
按热度按时间xpszyzbs1#
根据https://www.w3.org/TR/webdatabase/,不建议使用Web SQL。
如果您需要存储结构化的客户端特定数据,而这些数据没有存储在服务器端,或者您不希望每次都从服务器请求,则可以使用
IndexedDB
。与
localStorage
相反,IndexedDB
是异步的,因此性能更高。它支持索引,因此比localStorage
(只是一个键值存储)的查询效率更高。但是,如果您的需求很简单,localStorage
可能是更好的选择。Here是一个关于不同web存储选项的链接。Here是一个关于如何将
IndexedDB
用于渐进式web应用的教程。yx2lnoni2#
为什么不是Web SQL?
Web SQL数据库规范自2010年11月起已被弃用。我们不鼓励浏览器供应商支持此技术,阅读本文的任何人都必须了解这一点。您可以read more about Web SQL on its Wikipedia page。现在回到您问题的另一个重要部分。
何时使用IndexedDB API?
您可以使用IndexedDB来储存任何JavaScript类型的数据,例如对象或数组,而不需要序列化它。所有对数据库的要求都是异步的。浏览器的实作允许您设定成功或错误发生时的回呼。这个实作的现代抽象允许您改用promise。
IndexedDB的一个主要用例是创建一个脱机数据库,该数据库在联机后将与实际数据库同步。这允许应用程序在脱机时继续工作并保持过去的重载。一个现已停用的famous example of this is Wunderlist、即使在脱机状态下,您也可以添加和编辑任务。2这些操作将进入一个同步队列,当网络再次可用时,该队列将被处理并清空。这就是许多待办事项列表应用程序脱机时的工作方式。