第32篇:前端本地存储全解——Cookie、localStorage、sessionStorage 区别与实战

前言

在我们博客项目中,我们使用过 localStorage 做主题缓存、数据持久化。

但浏览器存储体系包含三种:localStorage、sessionStorage、Cookie

90%新人只会用 localStorage,不知道:

  • 三种存储的区别

  • 什么时候用哪个

  • 存储大小、生命周期、是否随请求发送

  • 项目真实业务场景选型

本篇高质量完整吃透浏览器本地存储,补齐前端存储体系,优化博客项目缓存逻辑,面试高频题一网打尽。

一、三种存储核心区别(面试必背表格)

特性 localStorage sessionStorage Cookie
生命周期 永久存储,手动删除才消失 会话级,关闭页面立即清空 可设置过期时间,默认会话级
存储大小 5MB 5MB 4KB(极小)
是否随请求发送 不发送 不发送 每次请求自动携带
访问权限 同域名所有页面共享 当前页面独享 域名+路径限制
用途 本地持久化缓存 临时页面数据 登录态、令牌、用户标识

二、localStorage 实战封装(博客项目升级)

原生API需要手动JSON序列化、捕获异常,我们封装通用本地存储工具

复制代码

// 存储 export const setLocal = (key,value) => { localStorage.setItem(key,JSON.stringify(value)) } // 获取 export const getLocal = (key) => { const data = localStorage.getItem(key) return data ? JSON.parse(data) : null } // 删除 export const removeLocal = (key) => { localStorage.removeItem(key) }

适配对象、数组、普通数据,项目统一调用,简洁稳定。

三、sessionStorage 适用场景

适合临时数据

  • 本次页面打开的搜索临时记录

  • 页面临时表单草稿

  • 刷新保留、关闭消失的临时状态

四、Cookie 核心知识点(登录态原理)

Cookie 最大特点:浏览器每次请求后端都会自动携带

所以登录态、用户验证、token 传统方案全部依赖 Cookie

复制代码

document.cookie = "username=zhangsan; max-age=3600; path=/"

五、项目选型规范(开发直接照抄)

  • 永久本地配置、主题、缓存数据 → localStorage

  • 页面临时数据、关闭即清空 → sessionStorage

  • 用户登录、后台鉴权、请求携带参数 → Cookie

六、面试高频问答

1. localStorage 刷新会丢失吗?

不会,永久保存,清除缓存、手动删除才会丢失。

2. sessionStorage 刷新保留吗?

刷新页面保留,关闭标签页彻底清空。

只有4KB,且每次请求都会携带,过大导致请求头臃肿、网络变慢。

4. 三者哪个最安全?

都可被前端读取,无法存敏感密码,敏感数据必须存后端。

七、本篇结语

本地存储是前端业务开发100%高频使用的能力。

本篇彻底补齐浏览器存储体系,让你的博客项目缓存逻辑更加规范、专业,同时拿下一套完整面试考点。

相关推荐
滴滴答答哒11 小时前
VUE3+element-plus MultiSelect 多选下拉组件
前端·javascript·vue.js
其美杰布-富贵-李11 小时前
04 watch 与 Vue 响应式数据流
前端·javascript·vue.js
赵大仁13 小时前
生成式 UI 实战:用 JSON Schema + React 动态渲染 AI 界面
前端·ai·react·next.js·前端架构·生成式ui
kyriewen14 小时前
我排查了一个React内存泄漏——罪魁祸首是这3个被忽略的清理函数
前端·javascript·面试
IT_陈寒14 小时前
我又被JavaScript的隐式类型转换坑了
前端·人工智能·后端
其美杰布-富贵-李14 小时前
03 ref、reactive 与 computed 响应式数据
前端·javascript·vue.js
OpenTiny社区14 小时前
GenUI SDK v1.3.0 发布|多框架兼容,一键换物料,渲染器 & 演练场全面增强!
前端·ai编程
用户9385156350715 小时前
useRef + Web Worker 实战:React 如何优雅地拥抱多线程
前端·javascript·react.js
他们叫我秃子15 小时前
前端开发转 Go 全栈(五):终于遇到熟人了,Go 的闭包和高阶函数原来这么像 JavaScript
前端·后端·go
用户615958680002215 小时前
从 0 写一个迷你 wujie:用原生 Web API 实现微前端
前端