web應(yīng)用的本地儲(chǔ)存常用的方法有兩種,一種是利用cookie進(jìn)行儲(chǔ)存,另一種是利用HTML5儲(chǔ)存的方式來(lái)實(shí)現(xiàn)。
早期發(fā)明的cookie可以用來(lái)在本地持久化儲(chǔ)存少量的數(shù)據(jù),但由于cookie不能大量?jī)?chǔ)存數(shù)據(jù),并存在潛在的安全問(wèn)題等原因,又發(fā)明了新的稱為HTML5儲(chǔ)存的本地儲(chǔ)存方法。無(wú)論用戶離開web站點(diǎn)還是關(guān)閉瀏覽器,本地儲(chǔ)存的數(shù)據(jù)依舊會(huì)存在。
cookie
cookie是服務(wù)器發(fā)送到瀏覽器并保存在本地的一小塊數(shù)據(jù)。一般用來(lái)辨別用戶身份和跟蹤用戶行為。
當(dāng)我們勾選了記住密碼后我們?cè)谙麓蔚卿洉r(shí)不用密碼就能自動(dòng)登錄了。原因是在上次登錄時(shí)服務(wù)器發(fā)送了用戶名加密碼的某種加密形式到瀏覽器,再次登錄的時(shí)候?yàn)g覽器直接發(fā)送該cookie到服務(wù)器進(jìn)行驗(yàn)證。
cookie可以跟蹤用戶的行為。比如訪問(wèn)時(shí)間,訪問(wèn)的頁(yè)面等,以便提供個(gè)性化服務(wù)。
cookie的特點(diǎn)
- 生存周期。cookie保存在瀏覽器或本地硬盤上,cookie有一定的生存周期,超出周期就會(huì)被清除。
- 數(shù)量和長(zhǎng)度的限制。一個(gè)cookie的長(zhǎng)度不能超過(guò)4KB,同一域名下的cookie數(shù)量一般也有限制。
- 用戶選擇性使用。客戶端可以選擇禁用cookie。
- 存在一定的安全問(wèn)題。在HTTP請(qǐng)求中cookie是明文的,可能被跨站請(qǐng)求攻擊??赏ㄟ^(guò)加密和安全傳輸技術(shù)來(lái)解決這種問(wèn)題,另外最好不要用cookie保存私密信息。
- 額外開銷。每次發(fā)送HTTP請(qǐng)求都會(huì)攜帶cookie,可能會(huì)造成不必要的浪費(fèi)。
Web Storage
HTML5儲(chǔ)存又稱為Web Storage,它提供了一種以鍵值對(duì)的形式將數(shù)據(jù)儲(chǔ)存在本地的方式。Web Storage包含sessionStorage和localStorage兩種機(jī)制。
Web Storage的特點(diǎn)
- 較大的儲(chǔ)存空間。Web Storage能提供5MB的存儲(chǔ)空間,相比cookie而言要大上許多。
- 不與服務(wù)器發(fā)生交互。Web Storage中儲(chǔ)存的數(shù)據(jù)不會(huì)隨每次HTTP請(qǐng)求發(fā)送到服務(wù)器。
- 基于鍵值對(duì)。儲(chǔ)存和檢索都是基于指定的鍵名。
- 封裝了一些方法。封裝了setItem、getItemh和removeItem等方法。
- sessionStorage 針對(duì)一個(gè)session的數(shù)據(jù)儲(chǔ)存,在頁(yè)面會(huì)話時(shí)期可用,即只要瀏覽器打開就可使用。
- localStorage 沒(méi)有時(shí)間的限制,瀏覽器關(guān)閉重新打開仍然可用。