本文已参与「新人创作礼」活动,一起开启掘金创作之路。
浏览器存储是比较重要且基础的知识,在项目中经常会遇到,所以还是得多了解熟悉熟悉。常见的有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既可以通过客户端操作又可以通过服务端操作