概念:

  • cookie:HTTP响应头的一部分,通过name=value的形式存储,主要用于保存登录信息。在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。 存放数据大小为4K左右 。有个数限制(各浏览器不同),一般不能超过20个。
  • webstorage:本地存储,包括localStorage(本地存储)和sessionStorage(会话存储),二者都保存在客户端,不与服务器进行交互通信,存储数据大小一般都是:5MB。
  • localStorage:生命周期是永久,这意味着除非用户清除localStorage信息,否则这些信息将永远存在。应用场景:常用于长期登录或判断用户是否已登录。
  • sessionStorage:仅在当前会话下有效,关闭页面或浏览器后被清除。应用场景:敏感账号一次性登录。

  不同浏览器无法共享localStorage或sessionStorage中的信息。相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是,页面及标签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。

WebStorage与cookie区别:

  • 存储大小:cookie为4KB,而WebStorage是5MB;
  • 生命周期:cookie在设定时间内一直有效,localStorage一直有效,sessionStorage浏览器未关闭前有效;
  • 服务器通信:cookie在HTTP头中,参与服务器通信,WebStorage不参与服务器通信;
  • 安全性:cookie随着HTTP头发送到服务器端,可能会被拦截,安全性相对较低;webStorage相对cookie更高,但有伪造问题;
  • 易用性:cookie需要自行封装接口,webStorage直接调用接口;
  • 带宽消耗:只要涉及cookie的请求,cookie数据都会在服务器和浏览器间来回传送,消耗网络的带宽;webStorage直接获取存储在本地的数据,节省网络流量,0带宽;
  • 网络流量:webStorage不会传送到服务器,存储在本地的数据可以直接获取,也不会像cookie一样每次请求都会传送到服务器,所以减少了客户端和服务器端的交互,节省了网络流量;
  • 显示速度:有的数据存储在WebStorage上,再加上浏览器本身的缓存。获取数据时可以从本地获取会比从服务器端获取快得多,所以速度更快。

浏览器本地存储与服务器端存储的区别:

  • 数据既可以在浏览器本地存储,也可以在服务器端存储;
  • 浏览器可以保存一些数据,需要的时候直接从本地存取,sessionStorage、localStorage和cookie都是由浏览器存储在本地的数据;
  • 服务器端也可以保存所有用户的所有数据,但需要的时候浏览器要向服务器请求数据;
  • 服务器端可以保存用户的持久数据,如数据库和云存储将用户的大量数据保存在服务器端 ,服务器端也可以保存用户的临时会话数据,服务器端的session机制,如jsp的session对象,数据保存在服务器上;
  • 服务器和浏览器之间仅需传递session id即可,服务器根据session id找到对应用户的session对象,会话数据仅在一段时间内有效,这个时间就是server端设置的session有效期;
  • 服务器端保存所有的用户的数据,开销较大,而浏览器端保存则把不同用户需要的数据分别保存在用户各自的浏览器中,浏览器端一般只用来存储小数据,而非服务可以存储大数据或小数据服务器存储数据安全一些,浏览器只适合存储一般数据。

cookie和session的区别:

  • cookie数据存放在客户的浏览器上,session数据放在服务器上;
  • cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session;
  • session在一定时间内保存在服务器上,当访问增多,会比较占用服务器的性能,考虑到减轻服务器性能应当使用cookie;
  • 单个cookie保存的数*据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie;
  • 建议将登录信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中;
  • session保存在服务器,客户端不知道其中的信心;cookie保存在客户端,服务器能够知道其中的信息;
  • session中保存的是对象,cookie中保存的是字符串;
  • session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到,而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。