一、IndexedDB概念
IndexedDB是一个事务型数据库系统,是一个基于JavaScript的面向对象的数据库。IndexedDB中你可以使用一个key作为索引进行存储或者获取数据。你可以在事务中完成对数据的修改。和大多数web存储解决方案相同,indexedDB也遵从同源协议. 所以你只能访问同域中存储的数据,而不能访问其他域的。
二、为什么需要使用IndexedDB
当我们进行一些较大的SPA页面开发时,我们会需要进行一些数据的本地存储。
当数据量不大时,我们可以通过SessionStorage或者LocalStorage来进
行存储,但是当数据量较大,或符合一定的规范时,我们可以使用IndexedDB来进行数据的存储。
三、IndexedDB特点
(1)对象存储
IndexedDB内部采用对象仓库(object store)存放数据。所有类型的数据都可以直接存入,包括JavaScript 对象。对象仓库中,数据以"键值对"的形式保存,每一个数据记录都有对应的主键,主键是独一无二的,不能有重复,否则会抛出一个错误。
(2)事务性
在indexedDB 中,每一个对数据库操作是在一个事务的上下文中执行的。事务范围一次影响一个或多个object stores,你通过传入一个 object store(object store) 名字的数组到创建事务范围的函数来定义。