Web 中使用 IndexedDB 实现缓存

2022-11-21 15:31:55 浏览数 (3)


theme: fancy

说起 Web 缓存,我们自然就会想到 CookieLocalStorageSessionStorage,却很少提及 IndexedDB

上面说到的常见缓存技术,简单来说:

  • Cookie 缓存的数据可跟服务端进行交互信息,但是大小不超过 4KB
  • LocalStorage 将信息字符串化后存储,大小一般几兆。是一种同步操作。永久缓存,除非手动删除。
  • SessionStorageLocalStorage 类似,但是关闭站点之后,缓存数据就会消失。

那么 IndexedDB 呢?下面我们开讲~

IndexedDB 是什么

用户需要在本地存储大量的数据以满足离线缓存或者其他操作。并且可以按顺序检索,有效搜索值并可键值对存储,IndexedDB 应运而生。该规范提供了一个具体的 API 来执行高级键值数据管理。

在此之前还有一个类似数据库 Web SQL Database 的草案,但是在 2010-11-18 日宣布舍弃该草案。

IndexedDB 能够解决什么

那么,IndexedDB 具体能够帮助到我们什么呢?

上面也已经提及了,IndexedDB 存储数据特点:

  • 键值对存储

存储的数据,除了可以存储字符串数据,还可以:

  • 支持二进制的存储ArrayBuffer 对象和 Blob 对象。

IndexedDB 不同于前面提及的几种同步缓存,它是:

  • 异步操作。防止大量数据的读写,造成页面卡顿。

当然,IndexedDB 也跟上面提及他缓存一样:

  • 受到同源限制。保证数据的安全性。什么是同源限制,可参考浏览器的同源策略。

作为一个本地存储的数据库,它友好地:

  • 支持事务(transaction)。这意味着一系列操作步骤中,只要有一步失败,整个事务都会取消,数据库就会回滚到发生之前的状态,不存在只改写了一部分数据的情况。这个很赞

    0 人点赞