cookie 和 session 都是廣泛用來跟蹤瀏覽用戶身份的會話方式。html
session 主要是服務端使用處理數據,本文主要針對前端技術故很少贅述。前端
cookie 可經過 document.cookie
獲取所有 cookie。它是一段字符串,是鍵值對的形式。操做起來有些麻煩,可引入封裝好的庫進行使用,好比 js-cookie
點我。API 也很簡潔:git
Cookies.set("name", "value", { expires: 7 }); // 設置一個cookie,7天后失效
Cookies.get("name"); // => 'value'
Cookies.remove("name");
複製代碼
在 web 本地存儲場景上,cookie 的使用受到種種限制,最關鍵的就是存儲容量過小和數據沒法持久化存儲。github
在 HTML 5 的標準下,出現了 localStorage 和 sessionStorage 供咱們使用。web
分類 | 生命週期 | 存儲容量 | 存儲位置 |
---|---|---|---|
cookie | 默認保存在內存中,隨瀏覽器關閉失效(若是設置過時時間,在到過時時間後失效) | 4KB | 保存在客戶端,每次請求時都會帶上 |
localStorage | 理論上永久有效的,除非主動清除。 | 4.98MB(不一樣瀏覽器狀況不一樣,safari 2.49M) | 保存在客戶端,不與服務端交互。節省網絡流量 |
sessionStorage | 僅在當前網頁會話下有效,關閉頁面或瀏覽器後會被清除。 | 4.98MB(部分瀏覽器沒有限制) | 同上 |
WebStorage( localStorage 和 sessionStorage ) 自己就提供了比較好用的方法:瀏覽器
localStorage.setItem("name", "value");
localStorage.getItem("name"); // => 'value'
localStorage.removeItem("name");
localStorage.clear(); // 刪除全部數據
sessionStorage.setItem("name", "value");
sessionStorage.setItem("name");
sessionStorage.setItem("name");
sessionStorage.clear();
複製代碼
注意事項:緩存
JSON.stringify
,在移動端性能問題比較明顯。cookie 兼容性徹底沒問題;localStorage 和 sessionStorage 也支持 IE8+ 的瀏覽器,基本均可以正常使用。安全
另外留個小問題,除了手動設置 localStorage.clear()
,還有哪些方式會丟失 localStorage?服務器
快狗打車前端團隊專一前端技術分享,按期推送高質量文章,歡迎關注點贊。 文章同步發佈在公衆號喲,想要第一時間獲得最新的資訊,just scan it !cookie