基本概念
cookie
cookie英文餅干,顧名思義,大小應該非常小,cookie非常小,它的大小限制在4kb左右,是網景公司的前雇員在1993年發明。它的主要用於保存登陸信息,比如你登陸某個網站市場可以看到'記住密碼’,這就是通過在cookie中存入一段辨別用戶身份的數據來實現的。
localStorage
localStorage是HTML5標准中新加入的技術,當然早在IE6時代就有一個userData的東西用於本地存儲,而當時考慮到瀏覽器的兼容性,更通用的方案是使用flash。如今localStorage被大多數瀏覽器所支持。
sessionStorage
sessionStorage與localStorage的接口類似,但保存數據的生命周期與localStorage不同,做過后端的同學都知道Session這個詞,翻譯過來就是會話。而sessionStorage是前端的一個概念。它只是可以將一部分數據在當前會話中保存下來,刷新頁面數據依舊存在。但是葉敏啊關閉后,sessionStorage中的數據就會被清空。
三者的異同
數據上的生命周期的不同
Cookie 一般由服務器生成,可設置失效時間,如果在瀏覽器端生成cookie,默認是關閉后失效。
localStorage 除非被永久清除,否則永久保存。
sessionStorage 僅在當前會話會有效,關閉頁面或瀏覽器后被清除
存放數據的大小不同
Cookie 一般為4kb
localStorage 和 sessionStorage 一般為5mb
與服務器端通信不同
Cookie 每次都會攜帶HTTP頭中,如果使用cookie保存過多數據會帶來性能問題
localStorage 和 sessionStorage 僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信。
易用性
Cookie 需要程序員自己來封裝,原生的cookie接口不夠友好
localStorage 和 sessionStorage 原生接口可以接受,可以封裝來對Object和Array有更好的支持。
應用場景
因為考慮到每個HTTP請求都會帶着Cookie的信息,所以Cookie當然能是精簡就精簡力,比較常用的一個應用場景就是判斷用戶是否登陸,針對登陸過的用戶服務端就在它登陸時往Cookie中祝福一段加密過的唯一識別單一用戶的辨識碼,下次只要讀取這個值就可以判斷當前用戶是否登陸。曾經還使用Cookie來保存用戶在電商網站上的購物車信息,如今有來localStorage,這一切問題變得越來越輕松。