cookie、localStorage和sessionStorage区别

今天去参加了xx集团的面试,其中有一道题问到了cookie、localStorage和sessionStorage的区别,一想简单啊,这个我了解,结果在我一顿逼逼之后,却把自己绕蒙了,还好最后想了想还是答出来了。哈哈,面试的cto还笑话我说你这英语四级都过了,不应该啊,localStorage翻译过来就是本地存储,sessionStorage就是会话存储呀,哎,真是着实让我尴尬了,回来就赶紧把它们的区别下来啦,避免以后一紧张嘴又瓢了。。。。

cookie、localStorage和sessionStorage都是在浏览器端存储数据的。

下面说一下它们的概念和区别:

1.cookie是由服务器端生成的,发送给浏览器的,cookie总是保存在客户端,大小有限制,一般限制在4K左右,可以设置过期时间,如果不设置时间,生命周期会随浏览器的关闭而结束。

  • 缺点:
    (1)大小受限;
    (2)安全性较低;
    (3)每次访问都要发送cookie到服务器端,浪费宽带;
    (4)操作cookie的方法需要自定义,没有自带方法;

2.localStorage顾名思义是本地存储,是HTML5的WebStorage提供的API,永久保存,在关闭页面或者浏览器之后都不会消失,除非主动删除数据。存储大小为5MB,保存在客户端,不和服务器进行交互通信。

3.sessionStorage是会话存储,也是HTML5的WebStorage提供的API,只要浏览器窗口关闭后就会被销毁,另外单独打开同一个窗口同一个页面,sessionStorage也是不一样的。存储大小5MB,保存在客户端,不和服务器进行交互通信。

localStorage和sessionStorage只能存储字符串类型,对于对象可以用JSON.stringify转换成json字符串形式,再用JSON.parse转换成对象形式。

4.localStorage和sessionStorage方法:

  • 获取方式:
    localStorage:window.localStorage;;
    sessionStorage:window.sessionStorage;
  • 保存数据:
    .setItem (key, value) ,以键值对的方式储存信息。
  • 获取数据:
    .getItem (key) ,将键值传入,即可获取到对应的value值。
  • 删除所有的数据:
    .clear ()
  • 删除某个数据:
    .removeItem (key) ,根据键值移除对应的信息。
  • 获取某个索引的key:
    .key (index)

你可能感兴趣的:(cookie、localStorage和sessionStorage区别)