探討Cookie驻子、sessionStorage灿意、LocalStorage的異同

一、基本概念

1.Cookie

Cookie 顧名思義小餅干崇呵,它非常小缤剧,儲存空間限制在4kb左右,它的主要用途有保存登錄信息,比如你登錄某個網站市場可以看到“記住密碼”域慷,這通常就是通過在 Cookie 中存入一段辨別用戶身份的數據來實現(xiàn)的

2.sessionStorage

sessionStorage 與 localStorage 的接口類似荒辕,但保存數據的生命周期與 localStorage 不同。做過后端開發(fā)的同學應該知道 Session 這個詞的意思犹褒,直譯過來是“會話”抵窒。而 sessionStorage 是一個前端的概念,它只是可以將一部分數據在當前會話中保存下來叠骑,刷新頁面數據依舊存在李皇。但當頁面關閉后,sessionStorage 中的數據就會被清空宙枷。

3.localStorage

localStorage 是 HTML5 標準中新加入的技術掉房,它并不是什么劃時代的新東西。早在 IE 6 時代慰丛,就有一個叫 userData 的東西用于本地存儲圃阳,而當時考慮到瀏覽器兼容性,更通用的方案是使用 Flash璧帝。而如今,localStorage 被大多數瀏覽器所支持富寿,如果你的網站需要支持 IE6+睬隶,那以 userData 作為你的 polyfill 的方案是種不錯的選擇锣夹。

二、三者的異同

1.生命周期

cookie:一般由服務器產生苏潜,可設置失效時間银萍,如果是瀏覽器產生的,則默認關閉瀏覽器時失效恤左。

sessionStorage:僅在當前會話有效贴唇,關閉當前頁面或者瀏覽器后當即清除。

localStorage:除非主動清除飞袋,否則永久保存戳气。

2.存放數據大小

cookie一般4kb左右,而sessionStorage和localStorage儲存空間相對較大巧鸭,一般5Mb瓶您。

3.與服務器通訊

cookie每次都會都會攜帶在http頭中,如果使用cookie儲存過多數據纲仍,會帶來影響性能等問題呀袱。

sessionStorage和localStorage僅保存在客戶端(瀏覽器)中,不參與通訊郑叠。

4.易用性

cookie:需要程序員自己封裝夜赵,原生的cookie接口不友好。

sessionStorage和localStorage:源生接口可以接受乡革,亦可再次封裝來對Object和Array有更好的支持寇僧。

三、應用場景

了解三者的差異性署拟,便可以了解它們的應用場景了婉宰。

cookie:因為考慮到每個 HTTP 請求都會帶著 Cookie 的信息,所以 Cookie 當然是能精簡就精簡啦推穷,比較常用的一個應用場景就是判斷用戶是否登錄心包。針對登錄過的用戶,服務器端會在他登錄時往 Cookie 中插入一段加密過的唯一辨識單一用戶的辨識碼馒铃,下次只要讀取這個值就可以判斷當前用戶是否登錄啦蟹腾。曾經還使用 Cookie 來保存用戶在電商網站的購物車信息,如今有了 localStorage区宇,似乎在這個方面也可以給 Cookie 放個假了~

而另一方面 localStorage 接替了 Cookie 管理購物車的工作娃殖,同時也能勝任其他一些工作。比如HTML5游戲通常會產生一些本地數據议谷,localStorage 也是非常適用的炉爆。如果遇到一些內容特別多的表單,為了優(yōu)化用戶體驗,我們可能要把表單頁面拆分成多個子頁面芬首,然后按步驟引導用戶填寫赴捞。這時候 sessionStorage 的作用就發(fā)揮出來了。

四郁稍、安全性的考慮

需要注意的是赦政,不是什么數據都適合放在 Cookie、localStorage 和 sessionStorage 中的耀怜。使用它們的時候恢着,需要時刻注意是否有代碼存在 XSS 注入的風險。因為只要打開控制臺财破,你就隨意修改它們的值掰派,也就是說如果你的網站中有 XSS 的風險,它們就能對你的 localStorage 肆意妄為狈究。所以千萬不要用它們存儲你系統(tǒng)中的敏感數據碗淌。

五、sessionStorage和localStorage的操作抖锥。

localStorage和sessionStorage都具有相同的操作方法亿眠,例如setItem、getItem和removeItem等磅废。

localStorage和sessionStorage的方法纳像。

儲存數據 setItem()

將數據儲存到key字段

  sessionStorage.setItem("key","value");  localSotrage.setItem("key","value");
//注意:兩者存儲數據方法一致

獲取數據 getItem()

獲取指定儲存指定字段key的數據

var value = sessionStorage.getItem(“key”); var value = localStorage.getItem("key");

移除指定數據 removeItem()

刪除指定儲存字段key的數據

sessionStorage.removeItem("key"); localStorage.removeItem("key");

清除所有儲存數據 clear()

清除所有的value/key

sessionStorage.clear();  localStorage.clear();

其他操作方法

點操作和[]

localStorage還有 . 和 [] 寫入值得方法,如下

 let storage = window.localStorage();
storage.a = "key";
sotrage[a] = "key";

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末拯勉,一起剝皮案震驚了整個濱河市竟趾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宫峦,老刑警劉巖岔帽,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異导绷,居然都是意外死亡犀勒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門妥曲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贾费,“玉大人,你說我怎么就攤上這事檐盟」酉簦” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵葵萎,是天一觀的道長导犹。 經常有香客問我唱凯,道長,這世上最難降的妖魔是什么锡足? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任波丰,我火速辦了婚禮,結果婚禮上舶得,老公的妹妹穿的比我還像新娘。我一直安慰自己爽蝴,他們只是感情好沐批,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蝎亚,像睡著了一般九孩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上发框,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天躺彬,我揣著相機與錄音,去河邊找鬼梅惯。 笑死宪拥,一個胖子當著我的面吹牛,可吹牛的內容都是我干的铣减。 我是一名探鬼主播她君,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼葫哗!你這毒婦竟也來了缔刹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤劣针,失蹤者是張志新(化名)和其女友劉穎校镐,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體捺典,經...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡鸟廓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了辣苏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肝箱。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖稀蟋,靈堂內的尸體忽然破棺而出煌张,到底是詐尸還是另有隱情,我是刑警寧澤退客,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布骏融,位于F島的核電站链嘀,受9級特大地震影響,放射性物質發(fā)生泄漏档玻。R本人自食惡果不足惜怀泊,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望误趴。 院中可真熱鬧霹琼,春花似錦、人聲如沸凉当。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽看杭。三九已至忠藤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間楼雹,已是汗流浹背模孩。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贮缅,地道東北人榨咐。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像携悯,于是被迫代替她去往敵國和親祭芦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355