Cookies、localStorage、sessionStorage、IndexedDB的概念与语法


Cookies、localStorage、sessionStorage、IndexedDB 的概念、区别、典型场景,以及操作语法示例全融合在一起,方便你一边理解一边学习实操。


📦 浏览器存储方案详解 + 语法示例


1. Cookies

🧾 概念

  • 小文本,浏览器存储,自动随请求发送
  • 体积小(约4KB),用于身份验证、会话管理

🛠️ 常用操作示例(JS)

// 设置 cookie,设置7天过期
document.cookie = "username=Logan; max-age=" + 7*24*60*60 + "; path=/";

// 读取 cookie
console.log(document.cookie); // "username=Logan; other=val"

// 删除 cookie(设置过期时间为过去时间)
document.cookie = "username=; max-age=0; path=/";

注意:Cookies 是字符串格式,需要自己手动解析。


2. localStorage

🧾 概念

  • 同源永久存储,5\~10MB
  • 只能存字符串,需要 JSON 序列化复杂数据

🛠️ 常用操作示例

// 写入
localStorage.setItem("theme", "dark");
localStorage.setItem("user", JSON.stringify({name: "Logan", age: 30}));

// 读取
console.log(localStorage.getItem("theme")); // "dark"
console.log(JSON.parse(localStorage.getItem("user"))); // {name: "Logan", age: 30}

// 删除
localStorage.removeItem("theme");

// 清空所有
localStorage.clear();

3. sessionStorage

🧾 概念

  • 同 localStorage,但只在当前标签页/窗口存活
  • 关闭标签页自动清除

🛠️ 常用操作示例

// 写入
sessionStorage.setItem("tempData", "12345");

// 读取
console.log(sessionStorage.getItem("tempData"));

// 删除
sessionStorage.removeItem("tempData");

// 清空所有
sessionStorage.clear();

4. IndexedDB

🧾 概念

  • 浏览器内置数据库,存储大量结构化数据
  • 异步 API,支持事务、索引,存储对象、文件

🛠️ 简单操作示例

// 打开数据库
const request = indexedDB.open("MyDatabase", 1);

request.onerror = function(event) {
  console.error("数据库打开失败");
};

request.onupgradeneeded = function(event) {
  const db = event.target.result;
  // 创建对象仓库(表)
  db.createObjectStore("users", { keyPath: "id" });
};

request.onsuccess = function(event) {
  const db = event.target.result;

  // 开启事务,操作对象仓库
  const transaction = db.transaction("users", "readwrite");
  const store = transaction.objectStore("users");

  // 添加数据
  store.add({id: 1, name: "Logan"});

  transaction.oncomplete = function() {
    console.log("数据添加成功");
  };

  transaction.onerror = function() {
    console.error("事务失败");
  };
};

🆚 存储区别总结(带操作属性)

存储类型 生命周期 体积大小 读写方式 是否随请求发送 存储内容类型 典型用途
Cookies 自定义(默认会话) \~4KB 同步(字符串) 字符串 登录态、会话识别
localStorage 永久 5\~10MB 同步(字符串) 字符串(支持JSON) 用户偏好设置、本地缓存
sessionStorage 当前标签页 5\~10MB 同步(字符串) 字符串 临时会话数据
IndexedDB 永久 几百MB+ 异步(对象) 结构化数据、文件 大量数据存储、离线应用

💡 使用建议

  • 认证相关用 Cookies,让服务器识别用户
  • 配置、缓存用 localStorage,数据量小且持久
  • 临时页面数据用 sessionStorage,关闭即失效
  • 复杂数据、离线数据用 IndexedDB

2025年主流五大知名浏览器及其内核

搞懂Symbol类型

评 论
请登录后再评论