cookie(h5之前的存储方式)
每次同域名请求时都会传递存储数据,增加网络请求量,并造成主域的污染,并且不同浏览器的cookie的存储数量和大小不同
![dbe707284a8e2d4930301c2063a10cb5.png](https://i-blog.csdnimg.cn/blog_migrate/b2d17cf82d5ac6f63145a5fe0f8cda2d.jpeg)
var cookie = {
/**设置cookie
** name 标识
** value 值
** options {
** 'path': '访问路径',
** 'domain' : '域名',
** 'expire' : 过期时间
}
**/
setCookie : function(name,value,options){
var options = options ? options : {},
path = options.path ? options.path : '/',
domain = options.domain ? options.domain : document.domain,
time = options.expire ? (new Date().getTime() + options.expire * 1000) : '',
expire = new Date(time).toUTCString();
document.cookie = encodeURIComponent(name) + "="+ encodeURIComponent(value) + ";expires=" + expire +
";domain=" + domain + ";path=" + path;
},
//获取cookie
getCookie: function(name){
var arr,
reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg)){
console.log(arr);
return unescape(arr[2]);
}
return null;
},
//移除cookie
removeCookie: function(name){
var val = this.getCookie(name);
if(val != null){
this.setCookie(name,val, {
expire : - 1
})
}
}
}
sessionStorage和localStorage
一般限制同一域名5M
localStorage的存储周期为永久,只要开发者不手动删除,会一直存在
sessionStorage的存储周期为当前会话,数据会在浏览器会话(browsing session)结束时被清除,即浏览器关闭时
localstorage存储以字符串的形式,存储对象时,默认调用toString方法,解析时需要用JSON.stringify转化存储,获取数据后再用JSON.parse转化为对象
var ls = window.localStorage
ls.setItem('test', '本地存储字符串')
console.log(ls.getItem('test')) // 本地存储字符串
var testData = {a: 1, b: 2}
var testDataParse = JSON.stringify(testData)
ls.setItem('obj', testDataParse)
console.log(ls.getItem('obj')) // {a: 1, b: 2}