网络存储

Frontend SELF ZH
第 45 级 , 课程 3
可用

4.1 localStorage 和 sessionStorage

网络存储让网页应用可以在用户的浏览器中保存数据。这个功能特别适合保存一些跨访问或页面导航时需要保存的信息。在 HTML5 中,引入了两种主要的网络存储:localStorage 和 sessionStorage。

什么是 localStorage?

localStorage 是一种在用户浏览器中无限期保存数据的存储方式。即使在关闭浏览器或重启电脑后,localStorage 中的数据依然可用。这对需要跨会话保存的信息很有用,比如用户设置或购物车中的数据。

什么是 sessionStorage?

sessionStorage 是一种在用户浏览器中保存数据的方式,仅在一个会话期间有效。sessionStorage 中的数据只能在标签页或浏览器窗口打开时访问。这对只在一个会话期间需要的数据很有用,比如临时的表单数据或应用状态。

主要方法和属性

localStorage 和 sessionStorage 的方法和属性

这两种类型的网络存储拥有相同的 API,包括用于处理数据的方法和属性:

  1. setItem(key, value): 使用指定的键保存值。
  2. getItem(key): 返回保存的指定键的值。
  3. removeItem(key): 删除指定键的值。
  4. clear(): 清空存储中的所有数据。
  5. key(index): 根据索引返回键。
  6. length: 返回存储中的键值对的数量。

4.2 使用示例

localStorage 的使用示例:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>localStorage 示例</title>
        </head>
        <body>
          <h1>localStorage 示例</h1>
          <input type="text" id="username" placeholder="输入您的用户名">
          <button id="saveButton">保存</button>
          <button id="loadButton">加载</button>

          <script>
            const saveButton = document.getElementById('saveButton');
            const loadButton = document.getElementById('loadButton');
            const usernameInput = document.getElementById('username');

            // 保存值到 localStorage
            saveButton.addEventListener('click', function() {
              const username = usernameInput.value;
              localStorage.setItem('username', username);
              alert('用户名已保存!');
            });

            // 从 localStorage 加载值
            loadButton.addEventListener('click', function() {
              const savedUsername = localStorage.getItem('username');
              if (savedUsername) {
                usernameInput.value = savedUsername;
                alert('用户名已加载!\n' + `${savedUsername}`);
              } else {
                alert('未找到用户名。');
              }
            });
          </script>
        </body>
      </html>
    
  

sessionStorage 的使用示例:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>sessionStorage 示例</title>
        </head>
        <body>
          <h1>sessionStorage 示例</h1>
          <input type="text" id="sessionData" placeholder="输入些数据">
          <button id="saveSessionButton">保存</button>
          <button id="loadSessionButton">加载</button>

          <script>
            const saveSessionButton = document.getElementById('saveSessionButton');
            const loadSessionButton = document.getElementById('loadSessionButton');
            const sessionDataInput = document.getElementById('sessionData');

            // 保存值到 sessionStorage
            saveSessionButton.addEventListener('click', function() {
              const data = sessionDataInput.value;
              sessionStorage.setItem('data', data);
              alert('数据已保存在会话中!');
            });

            // 从 sessionStorage 加载值
            loadSessionButton.addEventListener('click', function() {
              const savedData = sessionStorage.getItem('data');
              if (savedData) {
                sessionDataInput.value = savedData;
                alert('数据已从会话中加载!\n' + `${savedData}`);
              } else {
                alert('会话中未找到数据。');
              }
            });
          </script>
        </body>
      </html>
    
  

4.3 localStorage 和 sessionStorage 的比较

localStorage 和 sessionStorage 的区别

  1. 存储时间:
    • localStorage 的数据保存是无限期的,除非用户或脚本明确删除它们。
    • sessionStorage 的数据仅在当前会话(浏览器标签页或窗口)期间有效。
  2. 作用域:
    • localStorage 中的数据在同一域名下的所有标签页和窗口中都可访问。
    • sessionStorage 中的数据仅在当前标签页或窗口中可访问。
  3. 存储大小:
    • 通常 localStorage 和 sessionStorage 每个域名的限制在 5-10 MB,具体取决于浏览器。

localStorage 和 sessionStorage 使用的比较示例:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>比较示例</title>
        </head>
        <body>
          <script>
            // 使用 localStorage
            localStorage.setItem('persistentData', '这些数据在会话间保留');
            console.log(localStorage.getItem('persistentData')); // "These data persists across sessions"

            // 使用 sessionStorage
            sessionStorage.setItem('temporaryData', '这些数据仅在会话期间有效');
            console.log(sessionStorage.getItem('temporaryData')); // "These data persists only during the session"
          </script>
        </body>
      </html>
    
  

4.4 应用领域

何时使用 localStorage:

  • 保存需要在会话间保留的数据,比如用户设置或偏好
  • 保存需要在同一域名下的所有标签页和窗口中可访问的数据
  • 保存较少更改的数据

何时使用 sessionStorage:

  • 保存仅在当前会话期间需要的临时数据
  • 保存当前标签页或窗口特定的数据
  • 保存需要在关闭标签页或窗口时删除的数据

安全性和隐私性

使用网络存储时重要的是考虑安全性和隐私性问题:

  1. 加密: 默认情况下,网络存储中的数据不加密。如果需要保存机密信息,建议在保存前加密数据。
  2. 跨域攻击: 网络存储仅限于同一域名,这可以防止其他域名访问数据。但需防范 XSS(跨站脚本)攻击,以免恶意人士获取存储中的数据。
  3. 数据量限制: 尽量只保存必要的信息,并定期清除过时的数据,以避免存储溢出。
1
调查/小测验
Map,Set 和迭代器第 45 级,课程 3
不可用
Map,Set 和迭代器
Map,Set 和迭代器
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION