sessionStrage 是HTML5新增的会话存储对象,不具有跨域等一切异/多 页面操作 ,用于临时保存同一窗口(标签页)的数据,在窗口关闭或浏览器关闭将会删除这些数据。
与之相对应的有 localStorage 将数据保存在客户端硬件设备上,不管它是什么,意思就是下次打开计算机时候数据还在。
下面详细对于前端页面缓存进行整理一下:
前端缓存有 cookie sessStrage localStorage 三种。
1.cookie
1)大小限制。cookie大小限制在4k左右,不适合存业务数据,多用于身份认证
2)随HTTP事务发送。cookie每次都会随HTTP事务一起发送,一般请求会占用浪费带宽
1.1应用
js设置cookie
document.cookie="popped=yes"
var cookie = {//封装好的方法 set:function(key,val,time){//设置cookie方法 var date=new Date(); //获取当前时间 var expiresDays=time; //将date设置为n天以后的时间 date.setTime(date.getTime()+expiresDays*24*3600*1000); //格式化为cookie识别的时间 document.cookie=key + "=" + val +";expires="+date.toGMTString(); //设置cookie }, get:function(key){//获取cookie方法 /*获取cookie参数*/ var getCookie = document.cookie.replace(/[ ]/g,""); //获取cookie,并且将获得的cookie格式化,去掉空格字符 var arrCookie = getCookie.split(";") //将获得的cookie以"分号"为标识 将cookie保存到arrCookie的数组中 var tips; //声明变量tips for(var i=0;i<arrCookie.length;i++){ //使用for循环查找cookie中的tips变量 var arr=arrCookie[i].split("="); //将单条cookie用"等号"为标识,将单条cookie保存为arr数组 if(key==arr[0]){ //匹配变量名称,其中arr[0]是指的cookie名称,如果该条变量为tips则执行判断语句中的赋值操作 tips=arr[1]; //将cookie的值赋给变量tips break; //终止for循环遍历 } },
delete:function(key){ //删除cookie方法
var date = new Date(); //获取当前时间
date.setTime(date.getTime()-10000); //将date设置为过去的时间
document.cookie = key + "=v; expires =" +date.toGMTString();//设置cookie
} return tips; } }
jQuery 操作cookie
$.cookie('the_cookie', 'the_value');
//添加一个"会话cookie"
$.cookie('the_cookie','the_value',{ expires:7, path:'/', domain:'jquery.com', secure:true })
//expires:(Number|Date)有效期;设置一个整数时,单位是天;也可以设置一个日期对象作为Cookie的过期日期;
//path:(String)创建该Cookie的页面路径;
//domain:(String)创建该Cookie的页面域名;
//secure:(Booblean)如果设为true,那么此Cookie的传输会要求一个安全协议,例如:HTTPS;
2.sessStrage
1) 同源策略限制。若想在不同页面之间对同一个sessionStorage进行操作,这些页面必须在同一协议、同一主机名和同一端口下。(IE 8和9存储数据仅基于同一主机名,忽略协议(HTTP和HTTPS)和端口号的要求)
2) 单标签页限制。sessionStorage操作限制在单个标签页中,在此标签页进行同源页面访问都可以共享sessionStorage数据。
3) 只在本地存储。seesionStorage的数据不会跟随HTTP请求一起发送到服务器,只会在本地生效,并在关闭标签页后清除数据。(若使用Chrome的恢复标签页功能,seesionStorage的数据也会恢复)。
4) 存储方式。seesionStorage的存储方式采用key、value的方式。value的值必须为字符串类型(传入非字符串,也会在存储时转换为字符串。true值会转换为"true")。
5) 存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在5MB以下。
js设置sessionStorage
// 保存数据到sessionStorage
sessionStorage
.setItem('key','value');
// 从sessionStorage获取数据
vardata
=sessionStorage
.getItem('key');
// 从sessionStorage删除保存的数据
sessionStorage
.removeItem('key');
// 从sessionStorage删除所有保存的数据
sessionStorage
.clear();
jQuery 操作sessionStorage
// 保存数据到sessionStorage
$.session.set('key', 'value')
// 从sessionStorage获取数据
$.session.get('key');
// 从sessionStorage删除保存的数据
$.session.remove('key');
// 从sessionStorage删除所有保存的数据
$.session.get('key');
3.localStorage
1)localStorage没有大小限制。限制的是浏览器对localStorage的限制 约500万字符左右,个浏览器不一致。
2)localStorage隐私模式不可读取。浏览器在设置成无痕浏览或者隐私模式时localStorage不可读取。
3)localStorage不能被爬虫获取。本质是在读写文件,不要用它完全取代URL传参,数据多的话会比较卡(Firefox会一次行将数据导入内存,想想就感觉吓人)。
4)localStorage没有时间限制。只要不手动清除缓存就会一直存在,如果后台设置有效时间,过期之后数据还是存在不过不可用
JS下的操作方法
- 获取键值:localStorage.getItem(“key”)
- 设置键值:localStorage.setItem(“key”,”value”)
- 清除键值:localStorage.removeItem(“key”)
- 清除所有键值:localStorage.clear()
- 获取键值2:localStorage.keyName
- 设置键值2:localStorage.keyName = “value”
JQ下的操作方法(JS方法前加”window.”)
- 获取键值:window.localStorage.getItem(“key”)
- 设置键值:window.localStorage.setItem(“key”,”value”)
- 清除键值:window.localStorage.removeItem(“key”)
- 清除所有键值:window.localStorage.clear()
- 获取键值2:window.localStorage.keyName
- 设置键值2:window.localStorage.keyName = “value”
demo:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script type="text/javascript" charset="utf-8" src="js/jquery.min.js"></script> <script type="text/javascript"> // JS操作部分 localStorage.JSa="JSA"; document.write(localStorage.JSa); localStorage.setItem('JSb',' JSB'); document.write(localStorage.getItem('JSb')); // JQuery操作部分 $(function(){ window.localStorage.JQa="JQA"; $("#a").text(window.localStorage.JQa); window.localStorage.setItem('JQb','JQB'); $("#b").text(window.localStorage.getItem('JQb')); }); </script> </head> <body> <p id="a"></p> <p id="b"></p> </body> </html>