cookie、localStorage和sessionStora
2019-08-21 本文已影响0人
isSunny
今天去参加了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)