浏览器数据库IndexedDB能做什么

2022-07-21 09:01:00

浏览器数据库 IndexedDB是什么,能做什么呢?

由于浏览器的功能越来越强,越来越多的网站开始考虑在客户机存储大量数据,以便减少从服务器获取数据,直接从本地获取数据。那么浏览器数据库 IndexedDB是什么,能做什么呢?




浏览器数据库 IndexedDB是什么,能做什么?

没有一种浏览器数据存储方案适合存储大量数据: Cookie大小不超过4 KB,并且每次请求都被发回给服务器; LocalStorage在2.5到10 MB之间(每一个浏览器不同),并且没有提供搜索功能,也无法建立定制的索引。因此,需要一种新的解决方案,这就是 IndexedDB诞生的背景。

在 IndexedDB中,我们可以通过开发工具看到存储数据:

特性

通常来讲, IndexedDB是由浏览器提供的本地数据库,网页脚本可以创建和操作。IndexedDB支持大量数据的存储、提供查询接口和建立索引。这是 LocalStorage没有的东西。IndexedDB在数据库类型上不属于关系型数据库(不支持 SQL查询语句),接近 NoSQL数据库。

IndexedDB有下列特征:

(1)键值对存储。IndexedDB内部使用了对象仓库(objectstore)来存放数据。可以直接存入所有类型的数据,包括 JavaScript对象。在对象仓库中,数据以"键-值对"的形式保存,每个数据记录有相应的主键,主键是唯一的,不得重复,否则将抛出错误。

(2)异步。IndexedDB操作时并没有锁住浏览器,用户仍然可以执行其他操作,这与 LocalStorage的操作是同步的。异步设计就是防止读取和写入大量数据,导致网页性能缓慢。

(3)支助服务。IndexedDB支持事务(transaction),意思是在一系列操作步骤中,在一步失败时整个事务被取消,数据库回滚到事务发生前的状态,并且没有只重写数据的一部分。

(4) IndexedDB具有同源限制,每个数据库对应地创建其域名。页面只能在自己的域名下访问数据库,无法访问跨域数据库。

(5)大型 IndexedDB存储空间比 LocalStorage大得多,一般不少于250 MB,甚至没有上限。

(6)支持二进制存储。IndexedDB不仅存储字符串,而且存储了 ArrayBuffer对象和 Blob对象。

IndexedDB数据库的使用目前可以在 HTTP协议中直接使用,而 cacheStorage缓存必须使用 HTTPS协议。

因此从应用场景来看, IndexedDB数据库还是相当广泛的,考虑到IE10也支持,所以基本可以肯定,在实际项目中应用是绝对不成问题的。


举例来说,页面中一些不经常变化的结构化数据,可以使用 IndexedDB数据库在本地存储,从而帮助提高页面的交互性能。