HTML 本地存儲(chǔ) 及 和 Cookie 對(duì)比

一、什么是本地存儲(chǔ)?

通過(guò)本地存儲(chǔ)(Local Storage),web 應(yīng)用程序能夠在用戶(hù)瀏覽器中對(duì)數(shù)據(jù)進(jìn)行本地的存儲(chǔ)。

在 HTML5 之前,應(yīng)用程序數(shù)據(jù)只能存儲(chǔ)在 cookie 中,包括每個(gè)服務(wù)器請(qǐng)求。本地存儲(chǔ)則更安全,并且可在不影響網(wǎng)站性能的前提下將大量數(shù)據(jù)存儲(chǔ)于本地。

與 cookie 不同,存儲(chǔ)限制要大得多(至少5MB),并且信息不會(huì)被傳輸?shù)椒?wù)器。

本地存儲(chǔ)經(jīng)由起源地(origin)(經(jīng)由域和協(xié)議)。所有頁(yè)面,從起源地,能夠存儲(chǔ)和訪(fǎng)問(wèn)相同的數(shù)據(jù)。


二、瀏覽器支持

表格中的數(shù)組指示了完全支持本地存儲(chǔ)的首個(gè)瀏覽器版本。

API
Chrome
IE
FireFox
Safari
Opera
Web Storage 4.0 8.0 3.5 4.0 11.5

三、HTML 本地存儲(chǔ)對(duì)象

HTML 本地存儲(chǔ)提供了兩個(gè)在客戶(hù)端存儲(chǔ)數(shù)據(jù)的對(duì)象:

  • window.localStorage - 存儲(chǔ)沒(méi)有截止日期的數(shù)據(jù)
  • window.sessionStorage - 針對(duì)一個(gè) session 來(lái)存儲(chǔ)數(shù)據(jù)(\color{red}{當(dāng)關(guān)閉瀏覽器標(biāo)簽頁(yè)時(shí)數(shù)據(jù)會(huì)丟失}
    在使用本地存儲(chǔ)時(shí),請(qǐng)檢測(cè)localStoragesessionStorage的瀏覽器支持:
if (typeof(Storage) !== "undefined") {
    // 針對(duì) localStorage/sessionStorage 的代碼
} else {
    // 抱歉!不支持 Web Storage ..
}

localStorage 對(duì)象

localStorage 對(duì)象存儲(chǔ)的是沒(méi)有截止日期的數(shù)據(jù)。當(dāng)瀏覽器被關(guān)閉時(shí)數(shù)據(jù)不會(huì)被刪除,在下一天、周或年中,都是可用的。
存儲(chǔ)、取回和刪除

// 存儲(chǔ)  下面兩種方式相等
localStorage.setItem("lastname", "Gates");
localStorage.lastname = "Gates"

// 取回
document.getElementById("result").innerHTML = localStorage.getItem("lastname");
//刪除
localStorage.removeItem("lastname");

實(shí)例解釋?zhuān)?br> 創(chuàng)建 localStorage 名稱(chēng)/值對(duì),其中:name="lastname",value="Gates"
取回 "lastname" 的值,并把它插到 id="result" 的元素中
刪除 localStorage.lastname

注釋?zhuān)好Q(chēng)/值對(duì)始終存儲(chǔ)為字符串。如果需要請(qǐng)記得把它們轉(zhuǎn)換為其他格式!


sessionStorage 對(duì)象

sessionStorage 對(duì)象等同 localStorage 對(duì)象,不同之處在于只對(duì)一個(gè) session 存儲(chǔ)數(shù)據(jù)。如果用戶(hù)關(guān)閉具體的瀏覽器標(biāo)簽頁(yè),數(shù)據(jù)也會(huì)被刪除。


與Cookie 對(duì)比

cookie是網(wǎng)站為了標(biāo)示用戶(hù)身份而儲(chǔ)存在用戶(hù)本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。
區(qū)別:

  1. cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要),即cookie在瀏覽器和服務(wù)器間來(lái)回傳遞。而sessionStoragelocalStorage不會(huì)自動(dòng)把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存。cookie數(shù)據(jù)還有路徑(path)的概念,可以限制cookie只屬于某個(gè)路徑下。
  2. 存儲(chǔ)大小限制也不同,
    cookie數(shù)據(jù)不能超過(guò)4k,同時(shí)因?yàn)槊看蝖ttp請(qǐng)求都會(huì)攜帶cookie,所以cookie只適合保存很小的數(shù)據(jù),如會(huì)話(huà)標(biāo)識(shí)。
    sessionStoragelocalStorage 雖然也有存儲(chǔ)大小的限制,但比cookie大得多,可以達(dá)到5M或更大。
  3. 數(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)閉。
  4. 作用域不同,
    sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個(gè)頁(yè)面;
    localStorage 在所有同源窗口中都是共享的;
    cookie也是在所有同源窗口中都是共享的。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,771評(píng)論 1 45
  • ??支持離線(xiàn) Web 應(yīng)用開(kāi)發(fā)是 HTML5 的另一個(gè)重點(diǎn)。 ??所謂離線(xiàn) Web 應(yīng)用,就是在設(shè)備不能上網(wǎng)的情況...
    霜天曉閱讀 1,185評(píng)論 0 2
  • 這次項(xiàng)目做的很炸。。。無(wú)時(shí)無(wú)刻修改bug···有點(diǎn)煩躁迷亂項(xiàng)目中遇到了一種情況:后一個(gè)頁(yè)面需要獲取前一個(gè)頁(yè)面的值,...
    機(jī)智小鐺鐺i閱讀 583評(píng)論 0 0
  • 1. cookie 1.1 什么是cookie cookie 是存儲(chǔ)于訪(fǎng)問(wèn)者的計(jì)算機(jī)中的變量。每當(dāng)同一臺(tái)計(jì)算機(jī)通過(guò)...
    cbw100閱讀 4,181評(píng)論 0 13
  • 三種本地存儲(chǔ)方式 cookie 前言 網(wǎng)絡(luò)早期最大的問(wèn)題之一是如何管理狀態(tài)。簡(jiǎn)而言之,服務(wù)器無(wú)法知道兩個(gè)請(qǐng)求是否來(lái)...
    流動(dòng)碼文閱讀 5,120評(píng)論 0 3

友情鏈接更多精彩內(nèi)容