同樣是經(jīng)常在面試所聞到的題目煤痕,我們來(lái)好好把三者之間的區(qū)別搞清楚。
1.cookie:存儲(chǔ)在用戶(hù)本地終端上的數(shù)據(jù)接谨。有時(shí)也用cookies,指某些網(wǎng)站為了辨別用戶(hù)身份塘匣,進(jìn)行session跟蹤而存儲(chǔ)在本地終端上的數(shù)據(jù)脓豪,通常經(jīng)過(guò)加密。一般應(yīng)用最典型的案列就是判斷注冊(cè)用戶(hù)是否已經(jīng)登過(guò)該網(wǎng)站忌卤。
2.sessionStorage - 針對(duì)一個(gè) session 的數(shù)據(jù)存儲(chǔ),當(dāng)用戶(hù)關(guān)閉瀏覽器窗口后扫夜,數(shù)據(jù)會(huì)被刪除。
sessionStorage 驰徊、localStorage 和 cookie 之間的區(qū)別
共同點(diǎn):都是保存在瀏覽器端笤闯,且同源的。
區(qū)別:cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要)棍厂,即cookie在瀏覽器和服務(wù)器間來(lái)回傳遞颗味;cookie數(shù)據(jù)還有路徑(path)的概念,可以限制cookie只屬于某個(gè)路徑下牺弹。存儲(chǔ)大小限制也不同浦马,cookie數(shù)據(jù)不能超過(guò)4k,同時(shí)因?yàn)槊看蝖ttp請(qǐng)求都會(huì)攜帶cookie张漂,所以cookie只適合保存很小的數(shù)據(jù)晶默,如會(huì)話(huà)標(biāo)識(shí)。
而sessionStorage和localStorage不會(huì)自動(dòng)把數(shù)據(jù)發(fā)給服務(wù)器航攒,僅在本地保存磺陡。sessionStorage和localStorage 雖然也有存儲(chǔ)大小的限制,但比cookie大得多漠畜,可以達(dá)到5M或更大币他。
數(shù)據(jù)有效期不同,sessionStorage:僅在當(dāng)前瀏覽器窗口關(guān)閉前有效盆驹,自然也就不可能持久保持圆丹;localStorage:始終有效,窗口或?yàn)g覽器關(guān)閉也一直保存躯喇,因此用作持久數(shù)據(jù)辫封;cookie只在設(shè)置的cookie過(guò)期時(shí)間之前一直有效硝枉,即使窗口或?yàn)g覽器關(guān)閉。
作用域不同倦微,sessionStorage不在不同的瀏覽器窗口中共享妻味,即使是同一個(gè)頁(yè)面;localStorage 在所有同源窗口中都是共享的欣福;cookie也是在所有同源窗口中都是共享的责球。Web Storage 支持事件通知機(jī)制,可以將數(shù)據(jù)更新的通知發(fā)送給監(jiān)聽(tīng)者拓劝。Web Storage 的 api 接口使用更方便雏逾。