存儲形式:key-->valuejson
過時策略:localstorage永久存儲,不過時,除非手動刪除,sessionstorage在重啓瀏覽器、關閉頁面或新開頁面時失效數組
大小限制:每一個域名5M瀏覽器
使用方法:(localstorage與sessionstorage操做相同)服務器
getItem(讀取)、setItem(設置)、removeItem(移除)、key(索引)、clear(清空)cookie
存儲內容:數組、json、圖片、腳本、樣式等能夠序列化爲字符串的內容網絡
//自定義localstorage的過時邏輯 function set(key,val){ var curTime=new Date().getTime(); localStorage.setItem(key,JSON.stringify({data:val,time:curTime})) } function get(key,exp){ var data=localStorage.getItem(key); var dataObj=JSON.parse(data); if(new Date().getTime()-dataObj.time>exp){ console.log("已過時") }else{ console.log("data="+dataObj.data) } }
使用場景:利用本地數據,減小網絡傳輸,弱網高延遲低帶寬,儘可能數據本地化session
優勢:幾乎全部瀏覽器都兼容;缺點:是每次請求頭信息會帶上;大小限制爲4k;主Domain污染app
它的屬性包括以下dom
value //鍵值對,如test=hello expires //絕對過時時間,如new Date(),因此瀏覽器都支持 domain //限定域名,如www.abc.com path //限定路徑,如/index max-age //相對失效時間,單位爲秒;取代expires,衝突則以max-age爲準(IE不支持) secure //協議,不須要指定,當HTTPS通訊時自動打開 HttpOnly//僅用於服務器發送,JS沒法讀取 document.cookie='test=hello;expires='+new Date(2017,5,1)+';path=/index;domain=www.abc.com;max-age=60*60*24*365;'
//設置固定過時時間的cookies function setCookie(name,value){ var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); }
//設置自定義過時時間cookie function setCookie(name,value,time){ var msec = getMsec(time); //獲取毫秒 var exp = new Date(); exp.setTime(exp.getTime() + msec*1); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); } //將字符串時間轉換爲毫秒,1秒=1000毫秒 function getMsec(DateStr){ var timeNum=str.substring(0,str.length-1)*1; //時間數量 var timeStr=str.substring(str.length-1,str.length); //時間單位前綴,如h表示小時 if (timeStr=="s"){ //20s表示20秒 return timeNum*1000;} else if (timeStr=="h"){ //12h表示12小時 return timeNum*60*60*1000;} else if (timeStr=="d"){ return timeNum*24*60*60*1000;} //30d表示30天 }
//讀取cookies function getCookie(name){ var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); //正則匹配 if(arr=document.cookie.match(reg)){ return unescape(arr[2]); } else{ return null; } }
//刪除cookies 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(); } }