本地存储Cookie、localStorage、sessionStorage

本文详细介绍了前端开发中常用的三种本地存储技术:cookie、localStorage及sessionStorage。这些技术用于存储用户数据,实现数据在多个页面间的共享,提升用户体验。文中对比了它们的功能特性,并提供了实用的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cookie、localStorage、sessionStorage都是存储在用户本地终端上的数据,一般会经过加密处理(例如base64编码)。通常将一些用户个人数据,例如用户名等存储在本地,既方便了用户的使用,也利于多个页面间传递数据时不用通过多次的请求服务器。

cookie采用”键=值”方式进行存储,且可以设置cookie的过期时间,在过期时间之前,即使窗口关闭或浏览器关闭,cookie也会一直存在

下面将cookie的常用方法写在一个对象中:
这里写图片描述

直接复制代码过来显示的样式太丑了,所以就截一张图,这样看代码舒服一点~(~ ̄▽ ̄)~

在Cookie对象中一共封装了四个方法:

这里写图片描述
Cookie.isAvailable():有些浏览器会禁用cookie,所以通过这个方法来判断浏览器是否支持cookie,原理就是只需设置一个值然后再将其读回,然后进行比较即可。

这里写图片描述
Cookie.set(key,value,minstoexpire):创建cookie

这里写图片描述
Cookie.get(key):获取指定cookie的值

这里写图片描述
Cookie.del(key):删除指定的cookie值,原理就是将cookie的过期时间设为-1,即设为过去的时间,则cookie就处于过期状态

注意:chrome不允许本地记录cookie,当上传到服务器时才可以,所以在本地chrome调试这段代码的时候返回的都会是一个空字符串,可以在IE或者FF上测试。

localStorage、sessionStorage

localStorage和sessionStorage都是h5新增的本地存储方法,也是通过”键:值”对的形式存储数据,区别在于两者的生存时间不同:
localStorage是持久性的,即使关闭窗口或者关闭浏览器,都不会被删除,除非进行手动删除;
sessionStorage是临时的,当窗口或者浏览器关闭,则其也会随之清除;

两者的用法是一样的,所以以用的最多的localStorage为例,同样的,把用到的方法封装在一个闭包中:
这里写图片描述
使用时也是一样,
Util.StorageSetter(key,value):创建数据
Util.StorageGetter(key):获取数据

是不是so easy啊~

### 3.1 CookieLocalStorageSessionStorage 的区别 CookieLocalStorageSessionStorage 是前端开发中常用的浏览器端存储方式,它们在存储容量、生命周期、跨域行为和数据交互等方面存在显著差异。 Cookie存储容量较小,通常为 4KB 左右,且每次请求都会自动随 HTTP 请求头发送到服务器端,这可能导致额外的网络流量开销。Cookie 支持设置过期时间,默认情况下为会话级别(即关闭浏览器后失效)。由于其跨域能力较强,且能与服务器进行交互,因此适用于会话管理和身份认证等场景[^1]。 LocalStorage存储容量较大,通常为 5MB 左右,且不会随请求自动发送到服务器。LocalStorage 没有过期时间限制,数据会一直保留在本地,直到手动清除或调用 `localStorage.clear()` 方法。由于其存储空间大、本地存储稳定,适用于持久化存储和离线应用,例如 H5 小游戏中的本地数据保存[^3]。 SessionStorageLocalStorage 的使用方式相同,但其生命周期仅限于当前会话,关闭浏览器标签页后数据会被清除。SessionStorage 也具备本地存储的优势,不会与服务器发生交互,适用于临时存储和多页面通信场景,例如在多个标签页之间共享临时状态[^2]。 ### 3.2 使用场景对比 | 存储方式 | 容量限制 | 生命周期 | 是否跨域 | 是否随请求发送 | 适用场景 | |---------------|----------|------------------|----------|----------------|------------------------------------| | Cookie | 4KB 左右 | 可设置或会话级 | 支持 | 是 | 会话管理、身份认证、跨域通信 | | LocalStorage | 5MB 左右 | 永久(手动清除) | 不支持 | 否 | 持久化存储、离线应用、本地数据缓存 | | SessionStorage| 5MB 左右 | 会话级(关闭标签清除) | 不支持 | 否 | 临时存储、多页面通信 | LocalStorageSessionStorage 的使用方式类似,例如: ```javascript // 存储数据 localStorage.setItem('key', 'value'); sessionStorage.setItem('tempKey', 'tempValue'); // 获取数据 const value = localStorage.getItem('key'); const tempValue = sessionStorage.getItem('tempKey'); // 删除数据 localStorage.removeItem('key'); sessionStorage.removeItem('tempKey'); // 清空所有数据 localStorage.clear(); sessionStorage.clear(); ``` Cookie 的使用方式则涉及设置 `document.cookie`,例如: ```javascript document.cookie = "username=JohnDoe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/"; ``` Cookie 与服务器交互的特性使其在身份认证中具有天然优势,而 LocalStorageSessionStorage 则更适合本地数据管理,避免不必要的网络流量消耗[^5]。 ### 3.3 选择建议 在实际开发中,应根据具体需求选择合适的存储方式。如果需要与服务器保持状态同步,如用户登录、会话管理等,应优先使用 Cookie。如果需要在客户端存储大量数据且不希望影响网络性能,应使用 LocalStorageSessionStorageLocalStorage 更适合长期存储,而 SessionStorage 更适合临时数据或页面间通信[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值