前端经典面试题 localStorage,sessionStorage和cookie的区别

一、存储大小

  1. cookie的数据大小不超过4k。
  2. localStorage和sessionStorage可以达到5M。

二、有效时间

  1. localStorage,持久存储数据,关闭浏览器数据也不丢失,除非用户自己删除数据
  2. sessionStorage,关闭浏览器后数据即删除
  3. cookie,一般在服务器生成,在设置的过期时间前一直有效;如果是在浏览器端生成cookie,默认是关闭浏览器后失效

三、与服务器通信
localStorage和sessionStorage仅在客户端中保存,不参与和服务器的通信,因此显示速度会更快。
cookie每次都会自动携带在http头中,但如果使用cookie保存过多数据会带来性能问题

四、localStorage

持久化的本地存储,
永久性的存储,
不能跨域,
数据共享

五、sessionStorage

临时性的存储,
会话级别存储,
数据不共享,
若是通过a标签跳转的页面则sessionStorage共享

六、cookie

cookie在同源且符合path规则的文档间共享,
max-age用秒来设置cookie的有效期,
如果为0,则代表删除该cookie,
如果为负数,则代表cookie仅在本窗口内有效,关闭窗口即失效

七、存储类型

三者的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换,也就是JSON.stringify()和JSON.parse()。

补充下path规则:
当cookie的path设置了值不为null的时候,以设置的值为准。
当cookie的path为null时候,获取请求的URI的path值
1). 当URI的path值是以“/”结尾的时候,直接设置为cookie的path值
2). 当URI的path值不是以“/”结尾的时候,查看path里面是否有“/”
(1). 如果有“/”的话,直接截取到最后一个“/”,然后设置为cookie的path值。
(2). 如果没有“/”的话,将cookie的path设置为”/”。

你可能感兴趣的:(面试题)