IndexedDB的使用指南

216 阅读2分钟

什么是indexedDB

  • 根据MDN的描述:IndexedDB 是一种底层 API,用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blobs))。
  • 简单理解,当前端localStorage、sessionStorage都不能满足存储数据大小的话,那就可以考虑indexedDB
  • 众所周知localStorage和sessionStorage的存储大小根据浏览器不同最大也不超过10MB,而indexedDB能超过250MB的大小。

indexedDB特点

  1. 非关系型数据库:存储形式为键值对的形式,而并非像SQL类型库二维表形式。
  2. 持久化存储:indexedDB存储的数据不会像cookie、localStorage、sessionStorage等当用户清除浏览器缓存后数据会消失,indexedDB除非手动删除数据库,否则数据一直都在。
  3. 异步操作:最大亮点在于操作indexedDB时不会锁死浏览器,用户可以进行其他操作。
  4. 同源策略:indexedDB存在同源限制,每个数据库都对应它的域名。网页只能访问自身域名下的数据库。

indexedDB API

  • 所有解释均来源于MDN
  1. 接口
  • 要获取数据访问权限,需要在window全局对象的indexedDB属性上调用open()方法,这个方法会返回一个IDBRequest 对象,这个对象是根据绑定事件处理函数访问结果集的方法。
  1. IDBFactory
  • 提供数据库的访问,这个是全局对象indexedDB实现的接口,是整个API的入口
  1. IDBOpenDBRequest
  • 表示一个打开数据库的请求。
  1. IDBDatabase
  • 表示一个数据库连接。这是在数据库中获取事务的唯一方式。
  1. IDBTransaction
  • 表示一个事务。在数据库上创建一个事务,指定作用域(例如要访问的存储对象),并确定所需的访问类型(只读或读写)。
  1. IDBRequest
  • 处理数据库请求并提供对结果访问的通用接口。
  1. IDBObjectStore
  • 表示允许访问通过主键查找的 IndexedDB 数据库中的一组数据的对象存储区。
  1. IDBIndex
  • 也是为了允许访问 IndexedDB 数据库中的数据子集,但使用索引来检索记录而不是主键。这有时比使用 IDBObjectStore 更快。
  1. IDBCursor
  • 迭代对象存储和索引。
  1. IDBCursorWithValue (en-US)
  • 迭代对象存储和索引并返回游标的当前值。
  1. IDBKeyRange
  • 定义可用于从特定范围内的数据库检索数据的键范围。

未来使用时,再来补充