基本概念
cookie:是網景公司的前雇員在1993年發明。它的主要用於保存登陸信息,比如登陸某個網站市場可以看到'記住密碼’,這就是通過在cookie中存入一段辨別用戶身份的數據來實現的。
sessionStorage:會話,是可以將一部分數據在當前會話中保存下來,刷新頁面數據依舊存在。但是頁面關閉后,sessionStorage中的數據就會被清空。
localStorage:是HTML5標准中新加入的技術,當然早在IE6時代就有一個userData的東西用於本地存儲,而當時考慮到瀏覽器的兼容性,更通用的方案是使用flash。如今localStorage被大多數瀏覽器所支持。
三者區別
1)存儲大小
cookie:一般不超過4K(因為每次http請求都會攜帶cookie、所以cookie只適合保存很小的數據,如會話標識)
sessionStorage:5M或者更大
localStorage:5M或者更大
2)數據有效期
cookie:一般由服務器生成,可以設置失效時間;若沒有設置時間,關閉瀏覽器cookie失效,若設置了時間,cookie就會存放在硬盤里,過期才失效
sessionStorage:僅在當前瀏覽器窗口關閉之前有效,關閉頁面或者瀏覽器會被清除
localStorage:永久有效,窗口或者瀏覽器關閉也會一直保存,除非手動永久清除,因此用作持久數據
3)作用域
cookie:在所有同源窗口中都是共享的
sessionStorage:在同一個瀏覽器窗口是共享的(不同瀏覽器、同一個頁面也是不共享的)
localStorage:在所有同源窗口中都是共享的
4)通信
ccokie:十種攜帶在同源的http請求中,即使不需要,故cookie在瀏覽器和服務器之間來回傳遞;如果使用cookie保存過多數據會造成性能問題
sessionStorage:僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信;不會自動把數據發送給服務器,僅在本地保存
localStorage:僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信;不會自動把數據發送給服務器,僅在本地保存
5)易用性
cookie:需要自己進行封裝,原生的cookie接口不夠友好
sessionStorage:原生接口可以接受,可以封裝來對Object和Array有更好的支持
localStorage:原生接口可以接受,可以封裝來對Object和Array有更好的支持
應用場景
cookie:判斷用戶是否登錄過網站,以便實現下次自動登錄或記住密碼;保存事件信息等
sessionStorage:敏感賬號一次性登錄;單頁面用的較多(sessionStorage 可以保證打開頁面時 sessionStorage 的數據為空)
localStorage:常用於長期登錄(判斷用戶是否已登錄),適合長期保存在本地的數據