浏览器存储"四大家族":谁才是你的数据管家?
myzbx 2025-07-17 22:54 24 浏览
当你关闭浏览器再重新打开,登录状态为何还在?购物车商品为何不会消失?这些"记忆"背后,藏着浏览器存储的"四大家族"——Cookie、localStorage、sessionStorage和IndexedDB。它们各有所长,今天我们就来聊聊这四位管家如何分工,帮你在开发时精准选型。
一、Cookie:4KB的"老派信使"
Cookie诞生于1994年,堪称互联网存储界的活化石。这位老管家虽然容量只有4KB,却肩负着客户端与服务器通信的重任。每次HTTP请求,它都会自动携带在请求头中,像个忠心的信使往返于浏览器与服务器之间。
// 设置Cookie,7天后过期
document.cookie = "userId=123; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/; Secure; SameSite=Strict";
拿手好戏:用户认证、购物车临时数据、跨页面状态保持。但这位老管家有个坏习惯——喜欢"多管闲事",无论服务器是否需要,每次请求都要跟着跑腿,容易造成性能损耗。
二、localStorage:5MB的"长期储物柜"
如果说Cookie是流动的信使,那localStorage就是固定的储物柜。这位管家能存5MB数据,而且是永久存储,除非用户手动清理或代码删除。它像个细心的管家,会把用户偏好、主题设置等重要但不敏感的信息妥善保管。
// 存储用户主题偏好
localStorage.setItem('theme', 'dark');
// 读取数据
const theme = localStorage.getItem('theme');
// 删除数据
localStorage.removeItem('theme');
注意事项:这位管家虽然忠诚,但记性不太好——只能存储字符串。如果要存对象,得先用JSON.stringify()序列化,读取时再用JSON.parse()解析。而且它同步的工作方式,处理大量数据时可能会让页面"卡顿"。
三、sessionStorage:5MB的"一次性购物袋"
sessionStorage和localStorage是双胞胎,但性格迥异。它像个一次性购物袋,只在当前标签页的会话期间有效,关闭标签就会自动清空。适合存放表单临时数据、单页应用状态等"用完即弃"的信息。
独门秘籍:多标签页数据隔离。在A标签页存的数据,B标签页完全看不到,有效防止数据混乱。这对多账户同时登录的场景特别有用。
四、IndexedDB:GB级的"智能仓库"
当需要存储大量结构化数据时,前面三位管家就显得力不从心了。这时就需要IndexedDB这位"智能仓库管理员"登场。它支持异步操作、事务处理、索引查询,容量可达硬盘空间的50%,轻松应对GB级数据存储。
// 打开数据库
const request = indexedDB.open('myDatabase', 1);
// 创建对象仓库
request.onupgradeneeded = function(event) {
const db = event.target.result;
db.createObjectStore('products', {keyPath: 'id'});
};
适用场景:离线应用数据缓存、大型Web应用本地数据库、多媒体文件存储。不过这位管家脾气有点古怪——API比较复杂,建议搭配Dexie.js等库使用。
四大家族技能比拼
特性 | Cookie | localStorage | sessionStorage | IndexedDB |
容量 | 4KB | 5MB | 5MB | 数百MB至GB级 |
生命周期 | 可设置过期时间 | 永久存储 | 会话级 | 永久存储 |
作用域 | 同源+路径 | 同源 | 标签页隔离 | 同源 |
API风格 | 字符串操作 | 键值对API | 键值对API | 异步数据库API |
数据类型 | 字符串 | 字符串 | 字符串 | 支持所有数据类型 |
性能 | 随请求传输 | 同步阻塞 | 同步阻塞 | 异步非阻塞 |
选型秘籍:什么场景用什么存储?
- 用户登录状态 → Cookie(带HttpOnly和Secure标记)
- 主题偏好设置 → localStorage
- 多步骤表单 → sessionStorage
- 离线应用数据 → IndexedDB
- 购物车数据 → 临时数据用sessionStorage,需要持久化则结合localStorage和服务器同步
安全警示:这些坑要避开
- 不要用localStorage存敏感信息(如token),容易被XSS攻击窃取
- Cookie要设置HttpOnly、Secure和SameSite属性防XSS和CSRF
- 避免频繁读写localStorage,会阻塞主线程
- 大量数据操作优先用IndexedDB的异步API
就像每个家庭需要不同成员分工,Web开发也需要根据数据特性选择合适的存储方案。理解这四位管家的脾气秉性,才能让你的Web应用既高效又安全。下次开发遇到存储需求,不妨回来翻翻这篇指南,相信你会做出更明智的选择!
相关推荐
- OPPO Find X9手机曝料:6.6英寸屏幕、天玑9500芯片
-
IT之家8月27日消息,科技媒体xpertpick今天(8月27日)发布博文,报道称OPPO计划于今年10月推出FindX9系列旗舰手机,其中包括FindX9和...
- OPPO Find X9系列搭载影像新硬件,支持Ultra级画质和色彩还原
-
IT之家8月27日消息,OPPOFindX9系列手机发布时间逐渐临近,目前官方已开启新机的前瞻预热。OPPOFind系列产品负责人周意保今日发文解释了厂商为什么现在都喜欢跨界合作这一...
- 我回来了!聊聊屏幕对续航的影响_屏幕耗电吗
-
时隔一周终于回国,让大家久等了本来上周日就能到家,结果在旧金山转机的时候把护照弄丢了…幸好后来被一位黑人大姐找到了,才能顺利回国,感谢勤劳朴实的美利坚人民。出差途中笔记本的续航是很重要的,刚好联想的产...
- J人福音、P人救星,Lumix Flow如何重塑专业视频拍摄工作流
-
“等一下,刚才那个中景拍了没有?”“A机位的素材是哪一场的?”“完了,我忘了记哪一条是最好的了!”“今晚加个班,先把能用的素材挑出来……”作为经常一个人拍视频的内容创作者,这种崩溃称得上习以为常。如果...
- realme史上最窄边框和下巴 realme GT Neo3正式发布
-
中关村在线消息:今天下午14点,realme召开真我GTNeo3发布会。realmeGTNeo3搭载6.7英寸2412×1080OLED直屏,其支持120Hz刷新率,360Hz触控采样率,智能...
- 用酒精擦屏幕,对屏幕的伤害有多大?
-
天府新青年你触手可及的朋友圈附录:1.不是所有电脑的屏幕都不能用酒精来擦,通常来说只有镜面屏屏幕才有涂层,这种不能用酒精擦;而雾面屏用的是另外一种抗反射技术,这种一般擦了没事。镜面屏和雾面屏特别好认...
- windows11截屏快捷键是哪个?windows11快捷键设置大全
-
windows11键盘快捷方式就是键盘快捷方式就是按键或按键组合,可提供一种替代方式来执行通常使用鼠标执行的操作。下面就来分享下windows11截屏快捷键是哪个和windows11快捷键设置大全。一...
- 三星Galaxy S25 Slim配置曝光 6.7英寸屏幕搭配2亿像素主摄
-
【CNMO科技新闻】三星GalaxyS25系列将于北京时间1月23日正式发布,CNMO注意到有博主爆出了即将亮相GalaxyS25Slim的配置信息。据悉,GalaxyS25Slim将配备一...
- 两种手机屏幕到底有什么不一样?哪种手机屏幕更好?
-
一般来说,我们的手机屏幕只分为两种OLED和LCD,LCD是大火的一种手机屏幕,是千元机以及高端机的标配,OLED算是后起之秀,是近几年才渐渐兴起的一种类型的手机屏幕,那么这两种手机屏幕到底有什么不一...
- 有强芯才好用 这三款高性价比旗舰芯热机最低仅需1799元
-
在选购手机时,相信大家肯定都会把性能作为考虑的重点之一。而如果希望拥有出色的性能表现,一颗旗舰处理器是必不可少的。今天我就为大家汇总了几款采用旗舰处理器的底价新机,感兴趣的朋友千万不要错过。moto...
- 一文搞定FastDFS的搭建和使用_fastdfs怎么样
-
1.FastDFS概述FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文...
- 涨姿势!超级计算机用啥文件系统呢?
-
2015-10-1705:58:00作者:赵为民在计算机中,文件系统(filesystem)是一个非常重要的组件,你可以将他看做是操作系统的子系统,其实质就是一种软件的组件,通过文件系统我们可以...
- Window as a VM:Chrome OS 现可窗口化运行其它 Linux 分支
-
这世上纵然有多种办法可以在Chromebook上安装运行ChromeOS和其它Linux分支多系统,但如果无需重启通过引导切换,确实是个很酷的改进。Google布道师Francois...
- Win10新预览版19577开始推送:新图标+多项新功能
-
今日凌晨,微软正式向Windows10Insider快速通道用户推送了全新版本Windows10——Windows10InsiderPreviewBuild19577。19577版本是...
- 微软Windows升级密钥(例如家庭版升级为企业版)
-
下面的密钥,是微软官方提供的,仅能用于Windows10系统版本的升级,比如从家庭版升级为专业版、专业版升级为企业版等。升级密钥不能用于激活系统,激活需要KMS或者数字权利,由于涉及到版权问题,在此不...
- 一周热门
- 最近发表
-
- OPPO Find X9手机曝料:6.6英寸屏幕、天玑9500芯片
- OPPO Find X9系列搭载影像新硬件,支持Ultra级画质和色彩还原
- 我回来了!聊聊屏幕对续航的影响_屏幕耗电吗
- J人福音、P人救星,Lumix Flow如何重塑专业视频拍摄工作流
- realme史上最窄边框和下巴 realme GT Neo3正式发布
- 用酒精擦屏幕,对屏幕的伤害有多大?
- windows11截屏快捷键是哪个?windows11快捷键设置大全
- 三星Galaxy S25 Slim配置曝光 6.7英寸屏幕搭配2亿像素主摄
- 两种手机屏幕到底有什么不一样?哪种手机屏幕更好?
- 有强芯才好用 这三款高性价比旗舰芯热机最低仅需1799元
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)
- JS Loop For (32)