标签:
清理机制: IE
和Opera
会清理近期最少使用的cookie
,Firefox
会随机清理cookie
。cookie常见携带参数
属性项 | 属性项介绍 |
---|---|
name= value |
键值对,可以设置要保存的 Key/Value,注意这里的 NAME 不能和其他属性项的名字一样 |
Expires/ max-age |
过期时间,在设置的某个时间点后该 Cookie 就会失效,如 expires=Wednesday, 09-Nov-99 23:12:40 GMT |
Domain | 生成该 Cookie 的域名,如 domain=”soulteary.com” |
Path | 该 Cookie 是在当前的哪个路径下生成的,如 path=/admin/ |
Secure | 如果设置了这个属性,那么只会在 SSH 连接时才会回传该 Cookie |
http | http-only true:cookie只能在服务器端读取和修改,比较安全 |
如果 Cookie 具有 HttpOnly 属性且不能通过客户端脚本访问,则为 true;否则为 false。默认为 false。
ie 6 +都支持属性 HttpOnly,该属性有助于缓解跨站点脚本威胁。
常见应用:
1 document.cookie = name + ‘=‘ + escape(value); //设置cookie 2 //设置过期时间 3 function setCookie(name,value) 4 { 5 var Days = 30; 6 var exp = new Date(); 7 exp.setTime(exp.getTime() + Days*24*60*60*1000); 8 document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); 9 } 10 //读取cookie 11 function getCookie(name) 12 { 13 var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); //正则匹配 14 if(arr=document.cookie.match(reg)){ //使用match匹配,arr[0] 为匹配成功的字符串,比如" test1=2222",之后为()中逐个匹配到的值
15 return unescape(arr[2]); 16 } 17 else{ 18 return null; 19 } 20 }
1 //删除cookie 2 function delCookie(name) 3 { 4 var exp = new Date(); 5 exp.setTime(exp.getTime() - 1); 6 var cval=getCookie(name); 7 if(cval!=null){ 8 document.cookie= name + "="+cval+";expires="+exp.toGMTString(); 9 } 10 }
2.localstorage
1 try { 2 localStorage.setItem(key, JSON.stringify({data: value, time: curTime})); 3 } catch (e) { 4 //如果存储满了,就全部删掉 5 localStorage.clear();//全部删除 6 localStorage.setItem(key, JSON.stringify({data: value, time: curTime})); 7 }
存储满后会抛出异常,只要捕获异常,再删除全部数据,即可。
1 //封装过期控制代码 2 function set(key, value) { 3 var curTime = new Date().getTime(); 4 try { 5 localStorage.setItem(key, JSON.stringify({data: value, time: curTime})); 6 } catch (e) { 7 //如果存储满了,就全部删掉 8 localStorage.clear();//全部删除 9 localStorage.setItem(key, JSON.stringify({data: value, time: curTime})); 10 } 11 } 12 function get(key, exp) { 13 var data = localStorage.getItem(key); 14 var dataObj = JSON.parse(data); 15 if (new Date().getTime() - dataObj.time > exp) { 16 localStorage.removeItem(key);//过期就清除key的值 17 console.log(‘信息已过期‘); 18 } else { 19 return JSON.stringify(dataObj.data); 20 } 21 }
1 if (window.localStorage) { 2 console.log(‘This browser supports localStorage‘); 3 } else { 4 console.log(‘This browser does NOT support localStorage‘); 5 }
1 localStorage.setItem("b", str); //设置b的值 2 var b = localStorage.getItem("b"); //获取b 3 localStorage.clear();//全部删除 4 localStorage.removeItem(key);//清除key的值
①CACHE MANIFEST – 在此标题下列出的文件将在首次下载后进行缓存
②NETWORK – 在此标题下列出的文件需要与服务器的连接,且不会被缓存
③FALLBACK – 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)
更新:只有server端的manifest文件改变,浏览器才会重新拉取离线数据,需要页面再次刷新(2次刷新才能获取新资源),更新是全局性的,无法单独更新某个文件。
1 CACHE MANIFEST 2 # versin 1.0.0 //版本,若修改,则重新拉取 3 CACHE: 4 /theme.css //缓存该文件 5 /main.js 6 NETWORK: //不会被缓存的文件 7 login.jsp 8 FALLBACK: //回退页面 9 /html/ /offline.html
标签:
原文地址:http://www.cnblogs.com/beidan/p/5927854.html