cookie、session、localStorage分别是什么

背景:

之前对Cookie和Session的了解就是,Cookie是由服务器产生,保存于浏览器,而Session是保存于服务器中,每一个用户对应唯一一个Session,当我们用户登录的时候,会通过Cookie中的SESSIONID,来对应服务器中的SESSION,进而获取到SESSION中的信息

通过一个项目,我进一步认识了Cokie和SESSION,如果我们的服务器发生了高并发,可以理解为,在30分钟内有大量的访问,那么我们的服务器内就会保存大量的Session,这样一来,就会对服务器造成很大的压力

解决服务器中保存Session的压力,是将Session中的数据保存到了数据库中,我们创建一个表,里面有SESSIONID和和userId,当有用户登录的时候,我们就通过Cookie里的SESSIONID,来对数据库查询SESSIONID得到userId,然后得到用户信息,可以实现Session的功能,但是,当发生高并发的时候,由于是数据库中查询得到的用户,我们无法知道当前用户对应的是哪个用户,于是多线程就派上用场了,给每一个用户建立一个线程,ThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。

区别:

cookie:
  • 1.每个域名的存储量有限(一般是4k)

  • 2.所有域名的存储量有限

  • 3.会跟随请求被发送到服务器上(cookie不能被localStorage替代)

  • 4.有个数限制,不同浏览器下,一个域名下cookie的个数有限,并且限制数量可能不一样

sessionStorage:
  • 1.当浏览器窗口关闭的时候, sessionStorage 就会被销毁

  • 2.存储容量大(一般比localStorage的存储容量大)

localStorage:
  • 1.在客户端永久保存

  • 2.单个域名的存储容量大(一般为5M)

  • 3.总体数量无限制

localStorage 的优势

  • 1、localStorage 拓展了 cookie 的 4K 限制。
  • 2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个 5M 大小的针对于前端页面的数据库,相比于 cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的。

localStorage 的局限

  • 1、浏览器的大小不统一,并且在 IE8 以上的 IE 版本才支持 localStorage 这个属性。
  • 2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换。
  • 3、localStorage在浏览器的隐私模式下面是不可读取的。
  • 4、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡。
  • 5、localStorage不能被爬虫抓取到。
    localStorage 与 sessionStorage 的唯一一点区别就是 localStorage 属于永久性存储,而 sessionStorage 属于当会话结束的时候,sessionStorage 中的键值对会被清空。

常用的是Local、Session和Cookies这3个是浏览器缓存。
Web SQL是关系数据库缓存。
IndexedDB是索引数据库缓存。
Cache是离线缓存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值