localStorage
過期:永久存儲,永不失效,除非手動刪除
大?。?/strong>每個來源5MB(大多數(shù)瀏覽器)

瀏覽器中查看localStorage
常用API:
- 設(shè)置:
localStorage.setItem(key,value) - 獲?。?code>localStorage.getItem(key)
- 刪除:
localStorage.removeItem(key) - 獲取第n個key值:
localStorage.key(n),n從0開始
localStorage.key(0); // "jfVersion"
localStorage.key(1); // "login-service"
- 清除當(dāng)前域名下全部數(shù)據(jù):
localStorage.clear() - 獲取數(shù)據(jù)數(shù)量:
localStorage.length - 獲取所有數(shù)據(jù):
localStorage.valueOf()
sessionStorage
過期:在頁面會話結(jié)束時被清除。頁面會話在瀏覽器打開期間一直保持,并且重新加載或恢復(fù)頁面仍會保持原來的頁面會話。在新標(biāo)簽或窗口打開一個頁面會初始化一個新的會話,關(guān)閉瀏覽器會結(jié)束會話。
大?。?/strong>根據(jù)瀏覽器不同而不同,一般是2.5MB或5MB
常用API:與localStorage相似
注意事項
- 無論是
localStorage還是sessionStorage中保存的數(shù)據(jù)都僅限于該頁面的協(xié)議,即都遵循同源策略(協(xié)議,主機名,端口)。 - 只能存儲字符串。其他比如數(shù)組,json數(shù)據(jù),圖片等需要被序列化成字符串后再存儲。
- 注意判斷瀏覽器是否支持。
- 避免把敏感的信息存儲到本地。
- 注意key的唯一性,重復(fù)對一個key賦值會覆蓋原來的。
- 子域名之間不能共享存儲數(shù)據(jù)。
- 存入數(shù)據(jù)的時候需要異常處理(
try catch),避免超出容量報錯。超出容量大小后可以使用一些如LRU,F(xiàn)IFO的算法淘汰一些數(shù)據(jù)。 - 兩者都不會被發(fā)送到服務(wù)器端。
使用場景
- 使用本地數(shù)據(jù),減少網(wǎng)絡(luò)傳輸。
- 弱網(wǎng)絡(luò)環(huán)境下,高延遲,低帶寬,盡量把數(shù)據(jù)本地化。