IndexedDB的使用指南
什么是indexedDB
- 根据MDN的描述:IndexedDB 是一种底层 API,用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blobs))。
- 简单理解,当前端localStorage、sessionStorage都不能满足存储数据大小的话,那就可以考虑indexedDB
- 众所周知localStorage和sessionStorage的存储大小根据浏览器不同最大也不超过10MB,而indexedDB能超过250MB的大小。
indexedDB特点
- 非关系型数据库:存储形式为键值对的形式,而并非像SQL类型库二维表形式。
- 持久化存储:indexedDB存储的数据不会像cookie、localStorage、sessionStorage等当用户清除浏览器缓存后数据会消失,indexedDB除非手动删除数据库,否则数据一直都在。
- 异步操作:最大亮点在于操作indexedDB时不会锁死浏览器,用户可以进行其他操作。
- 同源策略:indexedDB存在同源限制,每个数据库都对应它的域名。网页只能访问自身域名下的数据库。
indexedDB API
- 接口
- 要获取数据访问权限,需要在window全局对象的indexedDB属性上调用open()方法,这个方法会返回一个
IDBRequest 对象,这个对象是根据绑定事件处理函数访问结果集的方法。
IDBFactory
- 提供数据库的访问,这个是全局对象indexedDB实现的接口,是整个API的入口
IDBOpenDBRequest
IDBDatabase
- 表示一个数据库连接。这是在数据库中获取事务的唯一方式。
IDBTransaction
- 表示一个事务。在数据库上创建一个事务,指定作用域(例如要访问的存储对象),并确定所需的访问类型(只读或读写)。
IDBRequest
IDBObjectStore
- 表示允许访问通过主键查找的 IndexedDB 数据库中的一组数据的对象存储区。
IDBIndex
- 也是为了允许访问 IndexedDB 数据库中的数据子集,但使用索引来检索记录而不是主键。这有时比使用 IDBObjectStore 更快。
IDBCursor
IDBCursorWithValue (en-US)
IDBKeyRange
未来使用时,再来补充