1、一般咱們在存儲數據的方式呢有三種,
cookie sessionstorage localstorage ,那麼這三種數據的存儲又有什麼關係呢?讓咱們一塊兒來看看吧html
var dataCookie='110'; document.cookie = 'token' + "=" +dataCookie;
function getCookie(name) { //獲取指定名稱的cookie值 // (^| )name=([^;]*)(;|$),match[0]爲與整個正則表達式匹配的字符串,match[i]爲正則表達式捕獲數組相匹配的數組; var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) { console.log(arr); return unescape(arr[2]); } return null; } var cookieData=getCookie('token'); //cookie賦值給變量。
function setTime() { //存儲cookie值而且設置cookie過時時間 var date\=new Date(); var expiresDays\=10;//設置十天過時 date.setTime(date.getTime()+expiresDays\*24\*3600\*1000); document.cookie\="userId=828; expires="+date.toGMTString(); console.log(document.cookie,'存儲cookie值而且設置cookie過時時間'); } setTime();
function delCookie(cookieName1) { //刪除cookie var date2\=new Date(); date2.setTime(date2.getTime()\-10001);//把時間設置爲過去的時間,會自動刪除 document.cookie\= cookieName1+"=v; expires="+date2.toGMTString(); console.log(document.cookie,'刪除cookie'); } delCookie('userId');
localStorage和sessionStorage:localStorage和sessionStorage所使用的方法是同樣的,下面以sessionStorage爲栗子:html5
var name='sessionData'; var num=120; sessionStorage.setItem(name,num);//存儲數據 sessionStorage.setItem('value2',119); let dataAll=sessionStorage.valueOf();//獲取所有數據 console.log(dataAll,'獲取所有數據'); var dataSession=sessionStorage.getItem(name);//獲取指定鍵名數據 var dataSession2=sessionStorage.sessionData;//sessionStorage是js對象,也可使用key的方式來獲取值 console.log(dataSession,dataSession2,'獲取指定鍵名數據'); sessionStorage.removeItem(name); //刪除指定鍵名數據 console.log(dataAll,'獲取所有數據1'); sessionStorage.clear();//清空緩存數據:localStorage.clear(); console.log(dataAll,'獲取所有數據2');
上面的使用方式說好了,下面就嘮嘮三者之間的區別,這個問題其實不少大廠面試的時候也都會問到,因此能夠注意一下這幾個之間的區別。程序員
cookie:可設置失效時間,沒有設置的話,默認是關閉瀏覽器後失效
localStorage:除非被手動清除,不然將會永久保存。
sessionStorage: 僅在當前網頁會話下有效,關閉頁面或瀏覽器後就會被清除。面試
cookie:4KB左右
localStorage和sessionStorage:能夠保存5MB的信息。正則表達式
cookie:每次都會攜帶在HTTP頭中,若是使用cookie保存過多數據會帶來性能問題
localStorage和sessionStorage:僅在客戶端(即瀏覽器)中保存,不參與和服務器的通訊跨域
cookie:須要程序員本身封裝,源生的Cookie接口不友好
localStorage和sessionStorage:源生接口能夠接受,亦可再次封裝來對Object和Array有更好的支持數組
從安全性來講,由於每次http請求都會攜帶cookie信息,這樣無形中浪費了帶寬,因此cookie應該儘量少的使用,另外cookie還須要指定做用域,不能夠跨域調用,限制比較多。可是用來識別用戶登陸來講,cookie仍是比stprage更好用的。其餘狀況下,可使用storage,就用storage。
storage在存儲數據的大小上面秒殺了cookie,如今基本上不多使用cookie了,由於更大老是更好的,哈哈哈大家懂得。
localStorage和sessionStorage惟一的差異一個是永久保存在瀏覽器裏面,一個是關閉網頁就清除了信息。localStorage能夠用來誇頁面傳遞參數,sessionStorage用來保存一些臨時的數據,防止用戶刷新頁面以後丟失了一些參數。瀏覽器
localStorage和sessionStorage是html5才應用的新特性,可能有些瀏覽器並不支持,這裏要注意。緩存
if(navigator.cookieEnabled) { alert("你的瀏覽器支持cookie功能");//提示瀏覽器支持cookie } else { alert("你的瀏覽器不支持cookie");//提示瀏覽器不支持cookie }
複製代碼數據存放處:Cookie、localStorage、sessionStorage數據存放處
番外:各瀏覽器Cookie大小、個數限制。安全