cookie、session、localStorage和sessionStorage的区分

前言

首先我按照它们存储数据位置不同划分为cookie+session,localstorage+sessionstorage俩大类,划分原因是cookie保存在浏览器端,session保存在服务器端,这两者都不是存储在本地,而后者直接保存在客户端本地了,这大大减轻了服务器端的负担,同时,也加快了访问数据的速度。
12

先讲cookie与session
存储位置

cookie保存在浏览器端,session保存在服务器端

机制

cookie:

  1. 如果不设置过期时间,cookie保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie。
  2. 如果设置了cookie的过期时间,cookie被保存在硬盘中,关闭浏览器后,cookie数据任然存在,直到过期时间结束才消失。
  3. cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求时都带上它。

session:

  1. 当服务器收到请求需要创建session对象时,首先会检查客户端请求中是否包含sessionid。
  2. 如果有sessionid,服务器将根据该id返回对应session对象。
  3. 如果客户端请求中没有sessionid,服务器会创建新的session对象,并把session在本次响应中返回给客户端。
  4. 通常cookie方式存储sessionid到客户端,在交互中浏览器按照规则将sessionid发送给服务器。如果用户禁用cookie,则要使用URL重写,可以通过response.encodeURL(url)进行实现
存储内容

cookie只能保存字符串类型,以文本的方式,有大小的限制!session能支持任何类型的对象(可多个),没有大小限制!!同时session安全性要远大于cookie(因为要攻破session之前要先攻破cookie!!!)
注意:
cookie由对服务器的请求来传递,每次都会携带HTTP头中,如果使用cookie保存过多数据会带来性能问题!!

应用

cookie:

  1. 判断用户是否登录过网站,以便下次登录时能够实现自动登录(或者记住密码)。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。
  2. 保存上次登录的时间等信息。
  3. 保存上次查看的页面
  4. 浏览计数
    231

session:
Session用于保存每个用户的专用信息,变量的值保存在服务器端,通过SessionID来区分不同的客户。

  1. 网上商城中的购物车
  2. 保存用户登录信息
  3. 将某些数据放入session中,供同一用户的不同页面使用
  4. 防止用户非法登录
总结

这两者各有各的优缺点,具体的使用要根据实际情况来选择!!
7

sessionStorage与localStorage
机制

sessionStorage:

  1. 将数据保存在session对象中。
  2. 所谓session,是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。
  3. session对象可以用来保存在这段时间内所要求保存的任何数据。

localStorage:
将数据保存在客户端本地的硬件设备(通常指硬盘,也可以是其他硬件设备)中,即使浏览器被关闭了,该数据仍然存在,下次打开浏览器访问网站时仍然可以继续使用。

这两者的区别在于:sessionStorage为临时保存,而localStorage为永久保存。

存储位置

localStorage和sessionStorage都保存在客户端,不与服务器进行交互通信。

存储内容类型

localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理。详情可参考我之前的文章

优点

两者可统称为WebStorage,他们的优点有:

  1. 存储空间更大,相对于cookie的(4k),它有5m左右
  2. WebStorage不会传送到服务器,存储在本地的数据可以直接获取,也不会像cookie一样每次请求都会传送到服务器,所以减少了客户端和服务器端的交互,节省了时间,速度更快,同时也会比较安全!
这里特地讲一下session与sessionsorage

强调一点:
两者事实上是没有任何关联的(我一开始也以为有关系,错付了。。)
原因:

  1. session存储于服务器端,而sessionstorage位于客户端,没有任何关联
  2. 而且虽然说他们都是在对话周期结束后删除,但对两者而言,对话周期所代表意义不是一样的
    对session而言关闭浏览器或者服务器端Session过期,会话结束
    对sessionstorage而言关闭当前选项卡或者浏览器窗口

99

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值