【前端面试】一篇讲透客户端存储——IndexedDB、Cookie……

embedded/2024/9/23 2:15:33/

存储空间

IndexedDB 是一种在用户浏览器中运行的客户端存储技术,它允许网页应用程序存储大量结构化数据。IndexedDB 存储空间的底层实际上是使用用户的本地文件系统来存储数据的。

以下是一些关于 IndexedDB 存储空间的底层细节:

  1. 文件系统:IndexedDB 数据存储在用户的文件系统中,但具体位置对于用户来说是抽象的,并且由浏览器管理。

  2. 浏览器管理:浏览器为每个域(或称为源)创建和管理一个或多个数据库文件。这些文件通常位于用户的个人文件夹中,例如 ~/.local/share 在 Linux 上,或者在 Windows 上的 AppData 目录下。

  3. 安全性:IndexedDB 受到同源策略的限制,只有创建它的域可以访问这些数据。

  4. 存储限制:虽然 IndexedDB 提供了比传统 Cookie 和 Web Storage(localStorage 和 sessionStorage)更大的存储空间,但它仍然有存储限制。这些限制通常是基于用户磁盘空间的百分比来动态计算的。

  5. 临时和持久存储:IndexedDB 支持临时存储和持久存储。持久存储的数据会一直保留,直到用户或浏览器显式删除它们。临时存储的数据可能会在浏览器需要释放空间时被自动删除。

  6. 数据格式:IndexedDB 存储的数据是结构化的,可以是字符串、二进制数据、对象等。数据通过对象存储(Object Stores)和索引(Indexes)进行组织,以便于高效查询。

  7. 事务性:IndexedDB 提供了事务性的数据读写操作,确保数据的一致性和完整性。

  8. 隐私模式:在某些浏览器的隐私或无痕模式下,IndexedDB 的使用可能会受到限制,数据可能不会被保存。

  9. 跨浏览器:不同浏览器可能在 IndexedDB 的实现细节上有所不同,但核心概念和 API 是一致的。

  10. 用户清理:用户可以通过浏览器的设置或使用第三方工具清理 IndexedDB 数据。

总的来说,IndexedDB 的存储空间是浏览器在用户的设备上管理的一部分文件系统,专门用于存储网页应用程序的数据。

IndexedDB API

存储代码示例

  1. 打开或创建数据库

    var request = window.indexedDB.open('myDatabase', 1);
    request.onupgradeneeded = function(event) {var db = event.target.result;if (!db.objectStoreNames.contains('store')) {db.createObjectStore('store', {keyPath: 'id'});}
    };
    request.onsuccess = function(event) {var db = event.target.result;console.log('Database opened successfully');
    };
    request.onerror = function(event) {console.error('Database error:', event.target.error);
    };
    
  2. 添加数据到对象存储

    function addData(db, storeName, data) {var transaction = db.transaction([storeName], 'readwrite');var store = transaction.objectStore(storeName);var request =

http://www.ppmy.cn/embedded/98900.html

相关文章

❤Nodejs第四章(操作本地数据库增改查)

❤Nodejs 第四章(Node +Express操作本地数据库增删改查) (前置知识)Node.js RESTful API 以下为 REST 基本架构的四个方法: GET - 用于获取数据PUT - 用于更新或添加数据DELETE - 用于删除数据POST - 用于添加数据注:get和delete是在路径中传递数据,而post和put可以在…

etcd参数解释

etcd 版本 [rootaaaaaa ~]# /data/etcd/etcd-v3.5.15-linux-amd64/etcd --version etcd Version: 3.5.15 Git SHA: 9a5533382 Go Version: go1.21.12 Go OS/Arch: linux/amd64基础命令: etcd [flags]:启动一个 etcd 服务器。etcd --version:显示 etcd…

学习大数据DAY42 hive 分桶表

目录 分桶表 分桶表注意事项 hive 分桶表-创建分桶表 hive 排序关键字 hive 排序语句 上机练习 分桶表 分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形 成合理的分区。对于一张表或者分区,Hive 可以进一步组织成桶&…

微信小程序--31(todolist案例)

一.功能 输入待办事件添加代办事件删除代办事件 二、步骤 1.添加输入框 .wxml代码&#xff1a; <!-- 1.输入框 --><input type"text" bindinput"handleInput" value"{{text}}" /> .wxss代码&#xff1a; /* 1.输入框样式 */ i…

QT :VS2019 CMake QCefView编译

QCefView 介绍 QCefView是为Qt开发的一个封装集成了CEF&#xff08;Chromium Embedded Framework&#xff09;库的Widget UI组件。它允许开发者在Qt项目中轻松嵌入网页&#xff0c;并利用CEF的丰富Web能力来快速开发混合架构的应用程序。 Web能力集成&#xff1a;QCefView集成…

STM32中断系统之TIM定时中断

文章目录 前言一、TIM定时器简介1.1 定时器的基本功能1.2 时基单元1.3 定时器的其他功能1.4 TIM定时器的分类 二、TIM定时器的内部结构2.1 基本定时器2.2 通用定时器2.3 高级定时器 三、定时中断的基本结构四、时序图4.1 预分频器时序4.2 计数器时序4.3 计数器无预装时序4.4 计…

大模型在网络安全领域的七大应用

人工智能&#xff08;AI&#xff09;是指由计算机系统或机器执行的智能任务&#xff0c;通常需要人类智能来完成。AI的一个重要分支是自然语言处理&#xff08;NLP&#xff09;&#xff0c;即让计算机理解和生成自然语言。NLP的一个核心技术是语言模型&#xff08;LM&#xff0…

SD-WAN安全:在灵活性与安全性之间找到平衡

随着企业业务的不断扩展和数字化转型的加速&#xff0c;网络架构的灵活性和安全性成为了企业关注的重点。SD-WAN&#xff08;软件定义广域网&#xff09;作为一种新兴的网络架构&#xff0c;通过软件定义和虚拟化技术&#xff0c;为企业提供了更灵活、可靠、经济高效的广域网连…