浏览器的三大存储 //------------------------------------js的存储很常见----------------------------------------////cookie的测试需要在本地测试(!!!!!!!!!!!)//js的存储 cookie localStorage,se
//------------------------------------js的存储很常见----------------------------------------// //cookie的测试需要在本地测试(!!!!!!!!!!!) //js的存储 cookie localStorage,sessionStorage //localStorage 是持久化的本地保存,除非主动删除,不然会一直存在,而且在所有的同源窗口中都是可以共享的; //sessionStorage是会话级别的本地保存,比如一个页面关闭的时候该页面设置的sessionStorage数据会自动消失, //在不同浏览器窗口不会共享的,即使是同一个浏览器的同一个页面。 //storage只能存储字符串的数据,对于JS中常用的数组或对象却不能直接存储。 //所以需要通过JSON.stringify(gamerule)将需要设置的内容序列化成json字符串 //读取的时候可以将读取到的内容通过 JSON.parse(str)转化成对象 //两者使用方发相同 window.localStorage.setItem(key,value);//设置指定key的数据(JSON格式) window.localStorage.getItem(key);//获取指定key的数据 window.localStorage.removeItem(key);//删除指定key的数据 window.localStorage.clear();//清空所有的存储数据 //sessionStorage测试 var KEY='todo'; var Store={ save:function(items){ return window.sessionStorage.setItem(KEY,JSON.stringify(items)); }, fetch:function(){ return JSON.parse(window.sessionStorage.getItem(KEY)||'[]'); } } var s={'name':'王鸿基'}; Store.save(s); var x=Store.fetch(); console.log(x);//输出:Object {name: "王鸿基"} //cookie 和session 的区别: //1、cookie数据存放在客户的浏览器上,session数据放在服务器上。 //2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。 //3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。 //4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。 //5、所以个人建议: //将登陆信息等重要信息存放为SESSION //其他信息如果需要保留,可以放在COOKIE中 //cookie的js用法 //例子说明:当访问者首次访问网站时,他们会被要求填写姓名。名字会存储于 cookie 中。当访问者再次访问网站时,他们就会收到欢迎词。 //设置cookie过期时间,项目中常用次来设置七天免登陆的方法 function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+"; expires="+exp.toGMTString(); } //使用示例setCookie("name","hayden"); alert(getCookie("name")); //如果需要设定自定义过期时间 //那么把上面的setCookie 函数换成下面两个函数就ok; //程序代码 function setCookie(name,value,time) { var strsec = getsec(time); var exp = new Date(); exp.setTime(exp.getTime() + strsec*1); document.cookie = name + "="+ escape (value) + "; expires=" + exp.toGMTString(); } function getsec(str) { alert(str); var str1=str.substring(1,str.length)*1; var str2=str.substring(0,1); if (str2=="s") { return str1*1000; } else if (str2=="h") { return str1*60*60*1000; } else if (str2=="d") { return str1*24*60*60*1000; } } //这是有设定过期时间的使用示例: //s20是代表20秒 //h是指小时,如12小时则是:h12 //d是天数,30天则: d30 setCookie("name","hayden","s20"); Response.Cookies(“user_name”).Expires=Date+1 ‘指定cookie保存时间 保留COOKIES一个小时 Response.Cookies(“MyCookie”).Expires= (now()+1/24) Response.Cookies(“MyCookie”).Expires = DateAdd(“h”, 1, Now()) 设置60个月以后过期 Response.Cookies(“CookieName”).Expires=DateAdd(“m”,60,now()) 设置7秒以后过期 Response.Cookies(“User”).expires=second()+7 在expires后面定义的时间可以用时间函数代替 例如:date()+7就表示在今天的时间上加上7天,而second()+7则是7秒了。 Response.Cookies(“字段名”).expires=时间函数+N, 例如: Response.Cookies(“name2”).expires=date+1,表示Cookies保存1天, 再比如: Response.Cookies(“name2”).expires=Hour+8,表示Cookies保存8小时。 封装cookie相关函数 //cookie相关函数 // ------------ var CookieCars = { setCookie: function(name, value) { expiryday = new Date(); expiryday.setTime(expiryday.getTime() + 30 * 30 * 24 * 60 * 60 * 1 * 1000); document.cookie = name + "=" + escape(value) + "; expires=" + expiryday.toGMTString(); }, getCookie: function(name) { var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) { return unescape(arr[2]); } return null; }, clearCookie: function(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = CookieCars.getCookie(name); if (cval != null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); } }; 用法: 设置cookie --> CookieCars.setCookie('key',val) 获取cookie --> CookieCars.getCookie('key') 清除cookie --> CookieCars.clearCookie('key') 总结: 什么时候实用cookie,localStorage,或者sessionStorage本人习惯, 如果存储的数据不需要有过期时间即为页面开启与关闭就使用sessionStorage, 如果需要设置过期时间,比如2天过期就使用cookie(数据量要小) 如果不需要设置过期时间,两个页面或者几个页面共同使用数据,就使用localStorage (使用完数据后请及时清空数据,不清空的话会不安全) 清空可以配合页面加载完毕(注意只清空自己设的数据即可,不要清空与页面无关的数据) window.onload=function(){ window.localStorage.removeItem(key);//删除指定key的数据 };页面加载完毕