JS中cookies、sessionStorage 、 localStorage、indexDB 的区别

文章类型:Javascript

发布者:hp

发布时间:2023-03-15

在实际开发过程中,有业务场景需要进行存储,主要是cookies、sessionStorage 、 localStorage、indexDB

一:相同点

都存储在客户端,都是用于保存数据的方式

二:不同点

1:存储位置不同

cookie一般由服务器端写入

sessionStorage和localStorage、indexDB由客户端写入

2:大小不同

cookie数据大小不能超过4k

sessionStorage和localStorage可以达到5M或更大,有大小限制

indexDB无限,没有大小限制

3:有效时间不同

localStorage 和indexDB存储持久数据,浏览器关闭后数据不丢失,除非主动删除数据

sessionStorage 数据在当前浏览器窗口关闭后自动删除

cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

4:交互方式不同

cookie是为标示用户身份储存在客户端上的数据,通常经过加密,始终在http请求中携带,在浏览器和服务器间来回传递,存储过多会引发性能问题以及头文件过大错误

sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存

5:实用性不同

cookie源生接口不友好,需要手动封装

sessionStorage和localStorage源生接口和再次封装对Object和Array有更好的支持

6:作用域不同

sessionStorage不在不同的浏览器窗口中共享

localStorage、cookie在所有同源窗口中都是共享的

7:应用场景不同

cookie一般用于存储登录验证信息ID或者token

SessionStorage一般用于检测用户是否是刷新进入页面

LocalStorage一般用于存储不易变动的数据,减轻服务器的压力