HTML教程 HTML教程HTML是什么HTML 代码编辑器HTML 基础标签HTML 元素HTML 属性HTML 标题HTML 段落HTML 文本格式化HTML CSSHTML 头部HTML链接HTML 图像HTML 区块和行内元素HTML 表格HTML 列表HTML 引用和定义元素HTML 计算机代码元素HTML 布局HTML 框架HTML 脚本/JavaScriptHTML 文件路径HTML 颜色HTML 字符(编码)和实体HTML URL(网址)HTML XHTMLHTML - Web服务器HTML空格符(空格的代码)HTML表单 HTML 表单HTML 表单属性HTML 表单元素HTML 表单input类型HTML 表单input属性HTML多媒体 HTML多媒体HTML5 教程 HTML5 教程 从入门到精通HTML5 拖放/拖拽HTML5 语义元素 HTML5 新的 Input 输入类型HTML5 新表单元素HTML5 新的表单属性HTML5 canvas画布HTML5 SVG矢量图形HTML5 Audio(音频)HTML5 Video(视频)HTML5 Web WorkersHTML5 存储HTML5 WebSocketHTML5 IndexedDBHTML5 IndexedDB增删改查

HTML5 IndexedDB

什么是IndexedDB

IndexedDB是一种在客户端存储大量结构化数据的Web API,它是HTML5中的一个新特性。IndexedDB允许web应用程序在本地存储大量的数据,并且可以通过高效的索引进行查询和检索,这使得web应用程序可以脱离网络运行。

IndexedDB

浏览器的开发人员工具IndexedDB界面

IndexedDB支持浏览器

ChromeIEFirefoxsafarioprea

IndexedDB的浏览器支持

不同的浏览器对于IndexedDB有不同的实现,正常来说,我们可以使用window.indexedDB来获取到浏览器的indexedDB对象。但是对于某些浏览器来说,还没有使用标准的window.indexedDB,而是用带前缀的实现。

// In the following line, you should include the prefixes of implementations you want to test.
window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
// DON'T use "var indexedDB = ..." if you're not in a function.
// Moreover, you may need references to some window.IDB* objects:
window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction || {READ_WRITE: "readwrite"};
// This line should only be needed if it is needed to support the object's constants for older browsers
window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;
// (Mozilla has never prefixed these objects, so we don't need window.mozIDB*)

cookie、localStorage、sessionStorage、indexDB区别

特性cookielocalStoragesessionStorageindexDB
大小4k左右5M左右5M左右无限
存在时间可以设置过期时间一直存储,除非手动清理关闭页面就清除一直存在,除非手动清理

indexedDB对比web SQL

推荐使用indexedDB。IndexedDB是HTML5标准操作客户端数据库。indexedDB和web SQL都是客户端存储数据库,微信web SQL在主流浏览器中个别浏览器不支持,曾被W3C推荐标准,现已被废弃。

indexedDB 具有以下特点:

IndexedDB应用场景

储存限制

一般来说,数据存储的的类型主要有以下两种:

持久化存储:这种数据是希望长久保留的,只有的当用户选择清除才会被删除掉(比如,在 Firefox 中,您可以通过转到*“首选项”*并使用“ *隐私和安全”>“Cookie 和站点数据”*下的选项,选择删除所有存储的数据或仅删除所选来源的存储数据)。

临时存储:临时型数据有一个全局限制和同源限制。全局限制是指临时性数据的总量不能超过磁盘总量的50%。当超出的时候,浏览器会自动删除最久远被用到的数据,直到可以储存目前需要储存的数据。同源限制是指同源下的临时型数据总量有一个限制,这个限制是全局限制的20%,但不低于10M,且不超过2G。当超出同源限制的时候,浏览器会抛出一个错误。(LRU 策略)。

在 Firefox 中,当使用持久存储时,会向用户提供一个 UI 弹出窗口,提醒他们这些数据将持续存在,并询问他们是否对此感到满意。临时数据存储不会引发任何用户提示。

默认的是临时存储;开发人员可以选择使用StorageManager.persist()方法使用持久储存。

使用索引

索引的意义在于,可以让你搜索任意字段,也就是说从任意字段拿到数据记录。如果不建立索引,默认只能搜索主键(即从主键取值)。

假定新建表格的时候,对name字段建立了索引。objectStore.createIndex('name', 'name', { unique: false });

管理indexedDB

可以通过浏览器的开发人员工具查看indexedDB使用情况,包含indexedDB已使用空间和存储空间配额大小、删除indexedDB所有数据。

360截图20230610113121358(1)_min.jpg

还可以通过过工具查询数据库、表、表字段、字段值,也可刷新删除。

IndexedDB