cookie、sessionStorage、localStorage的區別

cookie數據始終在同源的http請求中攜帶(即便不須要),即cookie在瀏覽器和服務器間來回傳遞。而sessionStorage和localStorage不會自動把數據發給服務器,僅在本地保存。cookie數據還有路徑(path)的概念,能夠限制cookie只屬於某個路徑下。存儲大小限制也不一樣,cookie數據不能超過4k,同時由於每次http請求都會攜帶cookie,因此cookie只適合保存很小的數據,如會話標識。json

sessionStorage和localStorage雖然也有存儲大小的限制,但比cookie大得多,能夠達到5M或更大。數據有效期不一樣,
sessionStorage:僅在當前瀏覽器窗口關閉前有效,天然也就不可能持久保持;
localStorage:始終有效,窗口或瀏覽器關閉也一直保存,所以用做持久數據;
cookie只在設置的cookie過時時間以前一直有效,即便窗口或瀏覽器關閉。做用域不一樣,sessionStorage不在不一樣的瀏覽器窗口中共享,即便是同一個頁面;
localStorage在全部同源窗口中都是共享的;cookie也是在全部同源窗口中都是共享的。Web Storage 支持事件通知機制,能夠將數據更新的通知發送給監聽者。Web Storage 的 api 接口使用更方便。api

總結:瀏覽器

  • localStorage沒有過時時間,只要不clear或remove,數據會一直保存。
  • sessionStorage 針對一個session進行數據存儲,生命週期與session相同,當用戶關閉瀏覽器後,數據將被刪除。
 
控制檯查看cookie:   alert(document.cookie)

localStorage 是以key-value形式保存數據的,key和value只能是字符串格式。所以數字1保存後,會轉換成字符串1。
若是要在localStorage或者sessionStorage中保存數字,那就得用json的數據形式來保存
例以下面示例代碼的其中一句服務器

var obj = {};
            obj[getData.value] = getData.value;
            obj['Number'] = 1;
            window.sessionStorage[getData.value] = JSON.stringify(obj);
本質就是使用使用JSON.stringify和 JSON.parse封裝數據
相關文章
相關標籤/搜索