cookie、localstorage、seesionStorage的区别 与 具体用法

本文深入解析了cookie、localStorage和sessionStorage的区别与应用。详细介绍了它们的存储容量、有效时间、与服务器交互方式,并提供了具体的JavaScript操作示例。

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

==============================三者区别分析==============================================

cookie:

存储: 存储在客户端,最大只能存 4kb的数据。

有效时间:可以设置有效时间。过期或者手动删除,就失效。是否失效与浏览器及窗口的打开和关闭无关。

数据与服务器之间的交互方式: cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端

localstorage:

存储:最大可以存储 5MB的数据。

有效时间:没有失效时间。可以长期存储。手动删除即失效。是否失效与浏览器及窗口的打开和关闭无关。

数据与服务器之间的交互方式:localstorage不会自动把数据发给服务器,仅在本地保存。

seesionStorage:

存储:最大可以存储5MB的数据。

有效时间:不能长期存储。 手动删除 或 浏览器窗口关闭即失效。

数据与服务器之间的交互方式:sessionStorage不会自动把数据发给服务器,仅在本地保存。

==================================具体用法===================================================

1. cookie

var cookies = document.cookie: 读取所有的cookie对象
document.cookie = "key=val, expires=d.toGTMString(), path=/"; 增加/修改 cookie  key的值     

function setCookie(key,val,exdays) {
	var d = new Date();
	d.setTime(d.getTime() + (exdays*24*60*60*1000));
	document.cookie=key+"="+val+";"+"expires="+d.toGMTString();
}

function getCookie(key){
	var objs = document.cookie.split(";");
	for(var i = 0; i < objs.length; i++){
		var obj = objs[i].trim();
		if(obj.indexOf(key)==0) {
			return obj.substring(parseInt(key.length + 1), obj.length);
		} else {
			return "";
		}
	}
}

function checkCookie() {
	var user = getCookie("username");
	if(!user){
		user = prompt("请输入用户姓名", "");
		setCookie("username", user, 0.0001);	
	} else {
		alert("欢迎"+user+"再次光临");
	}
}

checkCookie();

 2. localStorage

	alert("浏览器不支持localStorage");
} else {
	var storage = window.localStorage;
	
	// 新增/修改 localStorage 的三种方法
	storage.setItem('a', 111);
	storage['b'] = 222;			
	storage.c = 333;
	
	// 读取 localStorage 的三种方法
	console.log(storage.getItem('a'));
	console.log(storage['b']);
	console.log(storage.c);
	
	// 删除 localStorage 的多所有内容
	// storage.clear();
	
	// 删除某个键值对
	storage.removeItem('a');
	
	
	//  localStorage 会自动将 localStorage 转换成为字符串形式。
	// 使用 JSON.stringify() 这个方法,来将 JSON 转换成为 JSON 字符串。
	var data = {
		name: "Tony",
		age: "12",
		sex: "man"
	}
	storage.setItem('data', JSON.stringify(data));			
	console.log(storage.data);
	
	// 读取之后要将 JSON 字符串转换成为 JSON 对象,使用 JSON.parse() 方法:
	console.log(JSON.parse(storage.data));
	
}

3. sessionStorage

if(!window.sessionStorage){
	alert("浏览器不支持sessionStorage");
} else {
	var sessionStorage = window.sessionStorage;
	
	// 新增/修改 localStorage 的三种方法
	sessionStorage.setItem('a', 111);
	sessionStorage['b'] = 222;			
	sessionStorage.c = 333;
	
	// 读取 localStorage 的三种方法
	console.log(sessionStorage.getItem('a'));
	console.log(sessionStorage['b']);
	console.log(sessionStorage.c);
	
	// 删除 localStorage 的多所有内容
	// storage.clear();
	
	// 删除某个键值对
	sessionStorage.removeItem('a');	
	
	//  localStorage 会自动将 localStorage 转换成为字符串形式。
	// 使用 JSON.stringify() 这个方法,来将 JSON 转换成为 JSON 字符串。
	var data = {
		name: "Tony",
		age: "12",
		sex: "man"
	}
	sessionStorage.setItem('data', JSON.stringify(data));			
	console.log(sessionStorage.data);
	
	// 读取之后要将 JSON 字符串转换成为 JSON 对象,使用 JSON.parse() 方法:
	console.log(JSON.parse(sessionStorage.data));
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值