cookie、localstorage、sessionstorage对比

309 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

浏览器存储是比较重要且基础的知识,在项目中经常会遇到,所以还是得多了解熟悉熟悉。常见的有cookie、localstorage、sessionstorage,本文对它们三个从几个方面做个对比和总结。

1、数据有效时间方面

  • cookie可设置失效时间,否则默认为关闭浏览器后失效
  • localStorage始终有效,窗口或浏览器关闭也一直保存除非被清理,因此用作持久数据存储
  • sessionStorage仅在当前的浏览器窗口关闭前有效,页面关闭就清理

2、存储大小限制方面

  • cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据
  • localStorage sessionStorage虽然也有存储大小限制但是比cookie容量大得多。可以达到5M

3、与服务器通信方面

  • cookie每次都会携带在http头中,如果使用cookie保存过多数据会带来性能问题
  • localStorage sessionStorage:仅在客户端即浏览器中保存,不参与和服务器的通信

4、应用场景方面

  • 从安全方面来说,cookie可能被窃取,所以应该尽可能少的使用cookie,一般用来存放不敏感的信息
  • cookie还需要指定作用域,不可以跨域调用,限制很多
  • 敏感的信息用session存储,比如用户的登陆信息,session可以存放于文件,数据库,内存中都可以

总结:

相同:

三者都是在本地(浏览器端)存储数据。

不同:

sessionStorage和localStorage 都受到同源策略限制,就是跨域问题,在访问sessionStorage和localStorage的时候,页面必须在同一个域名,使用同一个协议,并且一个端口

sessionStorage比localStorage更严苛一点,除了协议、主机名、端口外,还要求在同一窗口(也就是浏览器的标签页)下。

localStorage是永久存储,除非手动删除。

sessionStorage当会话结束 (当前页面、标签页关闭的时候,自动销毁)

cookie的数据会在每一次发送http请求的时候,同时发送给服务器而localStorage、sessionStorage不会。

sessionStorage和localStorage 也有大小限制,相比cookie大了很多,是5M

sessionStorage和localStorage只能通过客户端操作,cookie既可以通过客户端操作又可以通过服务端操作