cookie、sessionStorage、localStorage区别

cookie是服务器端提供给浏览器端的特殊信息,以文本的形式存储在客户端,每次请求时,都会携带cookie。 cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie。若是在浏览器中设置了cookie的过时时间,cookie会被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过时时间结束才消失。浏览器

sessionStorage和localStorage是在h5中引入的本地存储机制,sessionStorage和localStorage中存储的数据不会被发送给服务器。服务器

localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,不然这些信息将永远存在。cookie

sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么全部经过sessionStorage存储的数据也就被清空了。session

不一样浏览器没法共享localStorage或sessionStorage中的信息。相同浏览器的不一样页面间能够共享相同的 localStorage(页面属于相同域名和端口),可是不一样页面或标签页间没法共享sessionStorage的信息。这里须要注意的是,页面及标 签页仅指顶级窗口,若是一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是能够共享sessionStorage的。函数

 

sessionStorage和localStorage的用法:spa

一、将数据存储到storage:3d

sessionStorage.setItem("key","value");对象

localStorage.setItem("key","value");blog

或者生命周期

sessionStorage.key = "value";

localStorage.key = "value";

二、从storage中根据key取出value:

sessionStorage.getItem("key");

localStorage.getItem("key");

或者:

sessionStorage.key

localStorage.key

经过getItem或直接使用localStorage["key"]获取到的信息均为实际存储的副本。

localStorage.key = {value1:"value1"}​;

localStorage.key.value1='a'​;

这里是没法​对实际存储的值产生做用的,下面的写法也不能够:

​localStorage.getItem("key").value1="a";

三、从storage中删除

sessionStorage.removeItem("key");

localStorage.removeItem("key");

四、清空storage

sessionStorage.clear();

localStorage.clear();

 

sessionStorage和localStorage中的值都是以字符串的形式存储,可是咱们常常会遇到须要存储对象的状况,好比咱们如今须要将一个JSON对象的信息经过storage存储下来,这时咱们须要借助两个函数:JSON.stringify()和JSON.parse()。

JSON.stringify(),将JSON对象解析为字符串

JSON.parse(),将JSON格式的字符串解析为对象

搭配上storage,一般是这么用的:

var obj = {"Math":"95","Physics":"98"};                //声明一个对象

sessionStorage.setItem("Score",JSON.stringify(obj));            //将JSON对象的字符串形式存储到storage

var obj2 = JSON.parse(sessionStorage.getItem("Score"));        //根据key取出值,并将值从新解析为JSON对象

相关文章
相关标签/搜索