阅读 196

cookie、localStorage、sessionStorage的区别与理解

1.cookie,localStorage,sesstionStrorage作为客户端和服务器通信的常用方法,有许多相同以及不同之处,适用着不同的场景,因此做出以下的整理:

image.png

  • 1.cookie

cookie可以在前后端进行用户的身份认证,标记用户。

一般由服务器生成,可以设置失效时间,每次都会携带在HTTP头中,如果cookie保存的数据过多会影响性能,所以一般是用于标识用户身份(存放数据大小4KB)

  • 2.Localstorage

localStorage是HTML5标准中新加入的技术,当然早在IE6时代就有一个userData的东西用于本地存储,而当时考虑到浏览器的兼容性,更通用的方案是使用flash。如今localStorage被大多数浏览器所支持。仅在客户端(浏览器)中保存,不参与服务器的通信,用户浏览器中的缓存数据,如果主动清除浏览器中的缓存,一般不会被删除(存放数据约为5MB)

  • 3.sessionStorage

sessionStorage与localStorage的接口类似,但保存数据的生命周期与localStorage不同,它只是可以将一部分数据在当前会话中保存下来,关闭页面或者浏览器会被清除(存放数据约为5MB)

拓展:session

session是由cookie进行标记的,当用户需要记住用户时,一般在登录时,在服务器端会设置一个响应头Set-cookie,返回给客户端,客户端在接收到这个响应后,此后发送的每个请求都会带上这个cookie这个请求头,在服务端存放session,客户端每次发送的请求中的cookie值会与服务端的session进行对比,从而使别客户端信息,正常的访问接口请求。

真实案例:在处理多业务的服务器集群时(例如淘宝),不同的服务器会被分配到不同的业务需求,但是同样处于一个域名下,那么session就会占用大量的空间内存,服务器既要处理业务,还得维护session的同步,如此一来,服务器无法通过增加业务的方式进行扩张,不易进行横向扩展。

  • 解决方案

(1)共享session

将session提取出来,集中存放在一个公共的内存空间中

(2)token

服务端是不需要进行存储,服务端可以通过解析token里面的信息用来判断是否处于登录状态,token里面可以携带cookie解析出来的信息,这种可以有效减缓服务端存储的负担,只需要每次在服务端对token进行一次校验即可


作者:悟空爱洗头
链接:https://juejin.cn/post/7034053824902135838

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐