欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解讀localStorage、sessionStorage、Cookie的使用區(qū)別及特點(diǎn)

 更新時(shí)間:2025年06月20日 09:12:21   作者:hoho不愛喝酒  
這篇文章主要介紹了localStorage、sessionStorage、Cookie的使用區(qū)別及特點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、localStorage、sessionStorage、Cookie是什么?

localStorage、sessionStorageCookie 都是瀏覽器中用于存儲(chǔ)數(shù)據(jù)的機(jī)制,但它們在存儲(chǔ)的范圍、持久性、和使用場景上有顯著的區(qū)別。

二、各自特點(diǎn)以及之間的區(qū)別

1. window.localStorage

  • 作用范圍: 存儲(chǔ)的數(shù)據(jù)在整個(gè)瀏覽器的同一域名下都可以訪問(包括不同的標(biāo)簽頁、窗口)。
  • 持久性: 數(shù)據(jù)永久保存在瀏覽器中,直到通過代碼刪除或用戶清除瀏覽器數(shù)據(jù)為止,即使關(guān)閉瀏覽器和計(jì)算機(jī),數(shù)據(jù)仍然存在。
  • 存儲(chǔ)容量: 一般為 5MB 左右,不同瀏覽器可能會(huì)有所不同。
  • 使用場景: 適用于需要長期保存的、與特定用戶相關(guān)的數(shù)據(jù),例如用戶偏好設(shè)置、主題選擇等。

2. sessionStorage

  • 作用范圍: 存儲(chǔ)的數(shù)據(jù)僅在同一瀏覽器窗口或標(biāo)簽頁中可用,不同的標(biāo)簽頁和窗口間不能共享 sessionStorage 數(shù)據(jù)。
  • 持久性: 數(shù)據(jù)在瀏覽器窗口或標(biāo)簽頁關(guān)閉時(shí)被自動(dòng)清除。
  • 存儲(chǔ)容量: 一般也為 5MB 左右,與 localStorage 相同。
  • 使用場景: 適用于僅在單個(gè)瀏覽會(huì)話期間需要保存的數(shù)據(jù),例如表單輸入臨時(shí)保存、單次操作步驟記錄等。

3. Cookie

  • 作用范圍: 可以在同一域名下的所有瀏覽器窗口和標(biāo)簽頁中訪問。通過設(shè)置 Domain 屬性,甚至可以在子域之間共享 Cookie。
  • 持久性: 可以設(shè)置 Expires 或 Max-Age 屬性來控制 Cookie 的過期時(shí)間。如果沒有設(shè)置,則 Cookie 在瀏覽器關(guān)閉后會(huì)被刪除(即所謂的“會(huì)話性 Cookie”)。
  • 存儲(chǔ)容量: 每個(gè) Cookie 的大小通常限制為 4KB,總數(shù)也有限制(不同瀏覽器有所不同,通常一個(gè)域名下最多 20-50 個(gè))。
  • 使用場景: 適用于與服務(wù)器之間的會(huì)話管理、保存用戶登錄狀態(tài)、跟蹤用戶行為等。由于 Cookie 會(huì)在每次 HTTP 請(qǐng)求時(shí)發(fā)送到服務(wù)器,所以通常用于需要與服務(wù)器交互的場景。

三、寫一個(gè)html頁面以用來測試這三者不同的區(qū)別

下面是一個(gè)簡單的 HTML 頁面,用來測試 localStorage、sessionStorage 和 Cookie 之間的區(qū)別。

這個(gè)頁面包含三個(gè)按鈕,分別用于設(shè)置、讀取和刪除 localStorage、sessionStorage 和 Cookie 的值,并在頁面上顯示結(jié)果。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Storage Test</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
        }
        button {
            margin: 10px 0;
            padding: 10px;
            font-size: 16px;
        }
        .output {
            margin-top: 20px;
            border-top: 1px solid #ccc;
            padding-top: 10px;
        }
    </style>
</head>
<body>
    <h1>Storage Test: localStorage, sessionStorage, and Cookies</h1>

    <h2>localStorage</h2>
    <button onclick="setLocalStorage()">Set localStorage</button>
    <button onclick="getLocalStorage()">Get localStorage</button>
    <button onclick="removeLocalStorage()">Remove localStorage</button>

    <h2>sessionStorage</h2>
    <button onclick="setSessionStorage()">Set sessionStorage</button>
    <button onclick="getSessionStorage()">Get sessionStorage</button>
    <button onclick="removeSessionStorage()">Remove sessionStorage</button>

    <h2>Cookie</h2>
    <button onclick="setCookie()">Set Cookie</button>
    <button onclick="getCookie()">Get Cookie</button>
    <button onclick="removeCookie()">Remove Cookie</button>

    <div class="output" id="output"></div>

    <script>
        // localStorage functions
        function setLocalStorage() {
            localStorage.setItem('testLocalStorage', 'Hello from localStorage!');
            showOutput('localStorage set.');
        }

        function getLocalStorage() {
            const value = localStorage.getItem('testLocalStorage');
            showOutput('localStorage value: ' + value);
        }

        function removeLocalStorage() {
            localStorage.removeItem('testLocalStorage');
            showOutput('localStorage removed.');
        }

        // sessionStorage functions
        function setSessionStorage() {
            sessionStorage.setItem('testSessionStorage', 'Hello from sessionStorage!');
            showOutput('sessionStorage set.');
        }

        function getSessionStorage() {
            const value = sessionStorage.getItem('testSessionStorage');
            showOutput('sessionStorage value: ' + value);
        }

        function removeSessionStorage() {
            sessionStorage.removeItem('testSessionStorage');
            showOutput('sessionStorage removed.');
        }

        // Cookie functions
        function setCookie() {
            document.cookie = "testCookie=Hello from Cookie; path=/; max-age=3600"; // 1 hour expiration
            showOutput('Cookie set.');
        }

        function getCookie() {
            const cookies = document.cookie.split('; ').find(row => row.startsWith('testCookie='));
            const value = cookies ? cookies.split('=')[1] : null;
            showOutput('Cookie value: ' + value);
        }

        function removeCookie() {
            document.cookie = "testCookie=; path=/; max-age=0";
            showOutput('Cookie removed.');
        }

        // Utility function to show output on the page
        function showOutput(message) {
            const output = document.getElementById('output');
            const newMessage = document.createElement('p');
            newMessage.textContent = message;
            output.appendChild(newMessage);
        }
    </script>
</body>
</html>

四、開始測試

打開兩個(gè)窗口,測試窗口間的 localStorage、sessionStorage 和 Cookie 的訪問情況,以更好地理解它們的差異。

  • 頁面1

  • 頁面2

測試 localStorage

頁面1點(diǎn)擊Set localStorage按鈕

頁面2點(diǎn)擊Get localStorage按鈕

頁面1點(diǎn)擊Remove localStorage按鈕

頁面2點(diǎn)擊Get localStorage按鈕

測試 sessionStorage

頁面1點(diǎn)擊Set sessionStorage按鈕

頁面2點(diǎn)擊Get sessionStorage按鈕

測試 Cookie

頁面1點(diǎn)擊Set Cookie按鈕

頁面2點(diǎn)擊Get Cookie按鈕

頁面210s后再次點(diǎn)擊Get Cookie按鈕(設(shè)置Cookie10s后過期)

總結(jié)

  • localStorage: 用于長期、持久的客戶端數(shù)據(jù)存儲(chǔ),適合需要跨頁面訪問并長期保存的數(shù)據(jù)。 
  • sessionStorage: 用于單次會(huì)話的數(shù)據(jù)存儲(chǔ),數(shù)據(jù)只在會(huì)話期間有效。 
  • Cookie: 用于服務(wù)器和客戶端之間的數(shù)據(jù)交換,通常用于會(huì)話管理、身份驗(yàn)證等場景,具有小容量和廣泛的作用范圍。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • javascript 打開頁面window.location和window.open的區(qū)別

    javascript 打開頁面window.location和window.open的區(qū)別

    有時(shí)候需要用js來實(shí)現(xiàn)頁面的打開,因?yàn)閖s下有window.location和window.open的不同實(shí)現(xiàn)方法,下面來簡單的說明下區(qū)別。
    2010-03-03
  • caller和callee的區(qū)別介紹及演示結(jié)果

    caller和callee的區(qū)別介紹及演示結(jié)果

    caller返回一個(gè)函數(shù)的引用,這個(gè)函數(shù)調(diào)用了當(dāng)前的函數(shù);callee放回正在執(zhí)行的函數(shù)本身的引用,它是arguments的一個(gè)屬性,感興趣的你可以參考下或許可以幫助到你
    2013-03-03
  • JavaScript中的關(guān)聯(lián)數(shù)組問題

    JavaScript中的關(guān)聯(lián)數(shù)組問題

    這篇文章主要介紹了JavaScript中的關(guān)聯(lián)數(shù)組問題的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • JavaScript稀疏數(shù)組示例教程

    JavaScript稀疏數(shù)組示例教程

    這篇文章主要為大家介紹了JavaScript稀疏數(shù)組的使用示例教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 深入學(xué)習(xí)JavaScript中的bom

    深入學(xué)習(xí)JavaScript中的bom

    Bom:瀏覽器對(duì)象模型提供了獨(dú)立于內(nèi)容而與瀏覽器窗口進(jìn)行交互的對(duì)象。描述了與瀏覽器進(jìn)行交互的方法和接口,可以對(duì)瀏覽器窗口進(jìn)行訪問和操作,下面我們來一起學(xué)習(xí)一下吧
    2019-05-05
  • js導(dǎo)航菜單(自寫)簡單大方

    js導(dǎo)航菜單(自寫)簡單大方

    一個(gè)簡單的多級(jí)下拉菜單菜單但是由于業(yè)務(wù)和樣式上的要求,為了簡潔找了好多都不適合于是自己寫了一個(gè),曬出來與大家分享,感興趣的朋友可以參考下哈,希望可以幫助到你
    2013-03-03
  • 詳解js的異步編程技術(shù)的方法

    詳解js的異步編程技術(shù)的方法

    本篇文章主要介紹了詳解js的異步編程技術(shù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • JavaScript中用let語句聲明作用域的用法講解

    JavaScript中用let語句聲明作用域的用法講解

    首先要注意let是ES6中的東西,起碼是IE10之前的IE瀏覽器兼容要千萬當(dāng)心!嗯...然后我們來看JavaScript中用let語句聲明作用域的用法講解
    2016-05-05
  • 淺談js內(nèi)置對(duì)象Math的屬性和方法(推薦)

    淺談js內(nèi)置對(duì)象Math的屬性和方法(推薦)

    下面小編就為大家?guī)硪黄獪\談js內(nèi)置對(duì)象Math的屬性和方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09

最新評(píng)論