IndexedDB
备注: 此特性在 Web Worker 中可用。
IndexedDB 是一种底层 API,用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blob))。该 API 使用索引实现对数据的高性能搜索。虽然 Web 存储在存储较少量的数据很有用,但对于存储更大量的结构化数据来说力不从心。而 IndexedDB 提供了这种场景的解决方案。本页面 MDN IndexedDB 的主要引导页——这里,我们提供了完整的 API 参考和使用指南、浏览器支持细节,以及关键概念的一些解释的链接。
关键概念和用法
IndexedDB 是一个事务型数据库系统,类似于基于 SQL 的关系型数据库管理系统(RDBMS)。然而,不像 RDBMS 使用固定列表,IndexedDB 是一个基于 JavaScript 的面向对象数据库。IndexedDB 允许你存储和检索用键索引的对象;可以存储结构化克隆算法支持的任何对象。你只需要指定数据库模式,打开与数据库的连接,然后检索和更新一系列事务。
- 阅读更多关于 IndexedDB 的主要特性和基本术语。
- 从使用 IndexedDB 指南的第一准则中学习异步使用 IndexedDB。
- 请参阅检查截止日期指南中的完整分步示例。
备注:正如大多数的 web 储存解决方案一样,IndexedDB 也遵守同源策略。因此当你在某个域名下操作储存数据的时候,你不能操作其他域名下的数据。
同步和异步
使用 IndexedDB 执行的操作是异步执行的,以免阻塞应用程序。
储存限制和回收标准
有许多 Web 技术在客户端(即本地磁盘)存储各种数据。IndexedDB 是最常见的一个。浏览器计算分配给 Web 数据存储的空间以及达到该限制时要删除的内容的过程并不简单,并且在浏览器之间有所不同。浏览器存储限制和回收标准尝试解释这是如何工作的,至少在火狐的情况下是如此。
接口
为了获取数据库的访问权限,需要在 window 对象的 indexedDB 属性上调用 open() 方法。该方法返回一个 IDBRequest 对象;异步操作通过在 IDBRequest 对象上触发事件来和调用程序进行通信。
连接数据库
IDBFactory-
提供数据库访问。此类型的对下是全局属性
Window.indexedDB和WorkerGlobalScope.indexedDB的值。因此,它是 API 的入口点。 IDBOpenDBRequest-
表示一个打开数据库的请求。
IDBDatabase-
表示一个数据库连接。这是在数据库中获取事务的唯一方式。
接收和修改数据
IDBTransaction-
表示一个事务。在数据库上创建一个事务,指定作用域(例如要访问的存储对象),并确定所需的访问类型(只读或读写)。
IDBRequest-
处理数据库请求并提供对结果访问的通用接口。
IDBObjectStore-
表示允许访问通过主键查找的 IndexedDB 数据库中的一组数据的对象存储区。
IDBIndex-
也是为了允许访问 IndexedDB 数据库中的数据子集,但使用索引来检索记录而不是主键。这有时比使用
IDBObjectStore更快。 IDBCursor-
迭代对象存储和索引。
IDBCursorWithValue-
迭代对象存储和索引并返回游标的当前值。
IDBKeyRange-
定义可用于从特定范围内的数据库检索数据的键范围。
自定义事件接口
此规范使用以下自定义接口触发事件:
IDBVersionChangeEvent-
作为
IDBOpenDBRequest.onupgradeneeded事件的处理器函数的结果,IDBVersionChangeEvent接口表示数据库的版本已经发生了改变。
示例
规范
| Specification |
|---|
| Indexed Database API 3.0> |