本地存儲:把一些信息存儲到客戶端本地(主要目的有很多,其中有一個就是實現多頁面之間的信息共享)
1. 離線緩存(xxx.manifest) H5處理離線緩存還是存在一些硬傷的,所以真實項目中一般還是傳統的NATIVE APP來完成這件事情
2. localStorage / sessionStorage:H5中新增加的API,基於這個API可以把一些數據緩存到客戶端本地 (常用)
3. IndexedDB / webSQL :本地數據庫存儲
4. Cookie:本地信息存儲(常用)
5. CacheStorage / ApplicationCache:本地緩存存儲
用到本地存儲的地方:
[頁面之間信息的通信]
A存儲信息,B頁面中可以獲取
1. 登錄
2. 記住用戶名密碼(或者自動登錄)
3. 購物車
4. 跳轉到其它頁面,返回上級頁面的時候停留在之前最后一次
我們來看看本地存儲cookie和服務端session的具體做法及使用場景

[做一些性能優化]
把一些不經常改變的數據,在第一次從服務器端獲取到之后,存儲到客戶端本地(記錄一個存儲時間),假設我們設置有效存儲期是10分鍾,那么10分鍾以內,我們再刷新頁面,就不用再向服務器發送請求了,直接從本地數據中獲取展示即可;超過10分鍾,從新向服務器發送請求,請求回來最新數據參考第一次,也一樣存儲到本地中...
1. 可減輕服務器壓力
2. 對於不經常更新的數據我們可以把存儲周期設置的長一些,有助於頁面第二次加載的時候,渲染的速度(移動端經常做這些事情)
localStorage VS cookie
[cookie]
1.兼容所有的瀏覽器
2.有存儲的大小限制,一般一個源(一個域下)只能存儲4KB內容
3.cookie有過期時間(當然我們自己可以手動設置這個時間)
4.殺毒軟件或者瀏覽器的垃圾清理都可能會把cookie信息強制清除掉
5.在隱私或者無痕瀏覽模式下,是不記錄cookie的
6.cookie不是嚴格的本地存儲,因為要和服務器之間來回傳輸
[localStorage]
1.不兼容IE8及以下
2.也有存儲的大小限制,一個源下最多只能存儲5MB左右
3.本地永久存儲,只要你不手動刪除,永遠存儲在本地(但是我們可以基於API removeItem/clear手動清除一些自己想要刪除的信息)
4.殺毒軟件或者瀏覽器的垃圾清理暫時不會清除localStorage(新版本谷歌瀏覽器會清除localStorage等信息)
5.在隱私或者無痕瀏覽模式下,是記錄localStorage的
6.localStorage和服務器沒有半毛錢關系
真實項目中使用本地存儲來完成一些需求的情況不是很多,一般都是基於服務器的session或者數據庫存儲完成的(服務器的session和本地的cookie是有關聯的),如果不考慮兼容,就想基於本地存儲來完成一些事情,那么一般都是用localStorage的(尤其是移動端開發)
localStorage.setItem([key],[value]):[value]必須是字符串格式的(即使寫的不是字符串,也會默認轉換為字符串)
localStorage.getItem([key]):通過屬性名獲取存儲的信息
localStorage.removeItem([key]):刪除指定的存儲信息
localStorage.clear():清除當前域下存儲的所有信息
localStorage.key(0):基於索引獲取指定的KEY名
document.cookie='';//=>設置cookie