瀏覽器的存儲機制 - Storage

瀏覽器的存儲機制 - Storage

    • 前言
    • 一、核心概念與區別
    • 二、常用 API
      • 1、存儲數據(setItem(key, value))
      • 2、 獲取數據(getItem(key))
      • 3、刪除單個數據(removeItem(key))
      • 4、清空所有數據(clear())
    • 5、遍歷所有鍵(key(index) 或 Object.keys())
    • 三、使用場景
      • LocalStorage
      • SessionStorage
    • <font color=red> 四、注意事項
      • 1、數據類型限制
      • 2、安全性
      • 3、 性能與使用建議
    • 五、與 Cookie 的對比
    • 總結

前言

在前端開發中,Storage 是瀏覽器提供的用于在客戶端存儲數據的機制,包括 LocalStorageSessionStorage。它們通過 Window 對象的屬性暴露,支持以**鍵值對**形式存儲數據,適用于
不需要頻繁與服務器交互 的輕量級數據存儲。

位置在 F12開發者工具 ——》 Application ——》 Storage
在這里插入圖片描述

一、核心概念與區別

在這里插入圖片描述

二、常用 API

兩者的 API 完全一致,通過 window.localStoragewindow.sessionStorage 調用。

1、存儲數據(setItem(key, value))

// 存儲字符串
localStorage.setItem('theme', 'dark'); // LocalStorage
sessionStorage.setItem('searchQuery', '前端'); // SessionStorage// 存儲對象(需先轉為JSON字符串)
const user = { id: 1, name: 'Alice' };
localStorage.setItem('user', JSON.stringify(user));

2、 獲取數據(getItem(key))

const theme = localStorage.getItem('theme'); // "dark"
const searchQuery = sessionStorage.getItem('searchQuery'); // "前端"// 解析JSON對象
const user = JSON.parse(localStorage.getItem('user')); // { id: 1, name: 'Alice' }

3、刪除單個數據(removeItem(key))

localStorage.removeItem('theme'); // 刪除LocalStorage中的theme鍵
sessionStorage.removeItem('searchQuery'); // 刪除SessionStorage中的searchQuery鍵

4、清空所有數據(clear())

localStorage.clear(); // 清空當前域名下的所有LocalStorage數據
sessionStorage.clear(); // 清空當前標簽頁的所有SessionStorage數據

5、遍歷所有鍵(key(index) 或 Object.keys())

// 方法1:通過索引遍歷(兼容性好)
for (let i = 0; i < localStorage.length; i++) {const key = localStorage.key(i); // 獲取第i個鍵名const value = localStorage.getItem(key);console.log(`${key}: ${value}`);
}// 方法2:轉為對象遍歷(ES6+)
const storageKeys = Object.keys(localStorage);
storageKeys.forEach(key => {const value = localStorage.getItem(key);
});

三、使用場景

LocalStorage

  1. 持久化用戶配置:記住用戶的主題偏好、語言設置等。
  2. 緩存簡單數據:緩存頻繁訪問但不敏感的數據(如登錄令牌,需配合安全措施)。
  3. 離線功能:配合 Service Worker 實現離線應用的數據存儲。

SessionStorage

  • 臨時表單數據:存儲用戶在當前頁面填寫的表單數據,防止刷新頁面丟失。
  • 單頁應用(SPA)狀態:存儲當前路由的臨時狀態(如搜索條件),避免路由切換時數據丟失。
  • 敏感數據臨時存儲:存儲一次性使用的敏感數據(如臨時驗證碼),關閉頁面后自動清除。

四、注意事項

1、數據類型限制

  • 僅支持存儲 字符串,存儲對象或數組時需通過 JSON.stringify()JSON.parse() 轉換:
// 錯誤:直接存儲對象會轉為 [object Object]
localStorage.setItem('user', { name: 'Alice' }); // 正確:先序列化
localStorage.setItem('user', JSON.stringify({ name: 'Alice' }));

2、安全性

  1. 不加密存儲:數據以明文存儲,禁止存儲敏感信息(如密碼、支付信息)。
  2. 同源策略:僅同域名下的頁面可訪問,不同子域名也無法共享(如 a.example.com 和 b.example.com 不共享)。
  3. XSS 風險:存儲的數據可能被惡意腳本讀取,需避免信任不可控的輸入。

3、 性能與使用建議

  1. 同步阻塞:API 為同步操作,大量數據存儲可能阻塞主線程,建議分批次處理。
  2. 存儲容量限制:避免存儲過大數據,超出限制會拋出 QuotaExceededError 異常。
  3. 監聽數據變化:可通過 storage 事件監聽同一域名下其他窗口的存儲變化(SessionStorage 不觸發此事件):
window.addEventListener('storage', (event) => {console.log(`${event.key} 的值從 ${event.oldValue} 變為 ${event.newValue}`);
});

五、與 Cookie 的對比

在這里插入圖片描述

總結

LocalStorage 和 SessionStorage 是前端輕量級存儲的核心工具,適用于
非敏感數據 的持久化或臨時存儲。使用時需注意數據類型轉換、安全性和存儲容量,結合業務場景選擇合適的存儲方式。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77472.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77472.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77472.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

考研單詞筆記 2025.04.18

chance n機會&#xff0c;風險&#xff0c;冒險&#xff0c;可能性&#xff0c;巧合&#xff0c;意外a偶然的&#xff0c;意外的 opportunity n機會&#xff0c;時機 crisis n危機&#xff0c;危急關頭 the economic crisis 經濟危機 danger n危險&#xff0c;可能性&#…

第三方API——Spring Boot 集成阿里云短信發送功能

目錄 一. 創建阿里云OSS服務并獲取密鑰&#xff0c;開通短信服務 1.1 注冊阿里云服務器 1.2 開通短信服務 1.3 創建對象存儲OSS服務 1.4 RAM用戶授權短信權限 1.5 新增用戶并授權用戶短信權限 1.6 獲取 AccessKey ID 和 AccessKey Secret 二. 創建項目集成短信發送 2.1…

b站PC網頁版視頻播放頁油猴小插件制作

文章目錄 前言需求分析實施觀察頁面起始渲染編碼效果展示 總結 前言 新手上路,歡迎指導 需求分析 想要一個簡約干凈的界面,需要去除推薦欄和廣告部分. 想要自由調節視頻播放速率,需要在視頻控制欄加一個輸入框控制視頻倍速 實施 觀察頁面起始渲染 因為要使用MutationObse…

暢游Diffusion數字人(27):解讀字節跳動提出主題定制視頻生成技術Phantom

暢游Diffusion數字人(0):專欄文章導航 前言:主題定制視頻生成,特別是zero-shot主題定制視頻生成,一直是當前領域的一個難點,之前的方法效果很差。字節跳動提出了一個技術主題定制視頻生成技術Phantom,效果相比于之前的技術進步非常顯著。這篇博客詳細解讀一下這一工作。 …

ESP8266簡單介紹

ESP8266模塊圖如下 ESP8266的工作模式有三種 ESP8266支持STA、AP、STAAP三種工作模式 ①STA模式 &#xff08;ESP充當設備與路由器相連&#xff09; ②AP模式 &#xff08;ESP充當路由器&#xff09; ③APSTA&#xff08;上述兩種模式兼具&#xff09; AT指令介紹 使用安…

DeepSeek-R3、GPT-4o 與 Claude-3.5-Sonnet 全面對比:性能、應用場景與技術解析

隨著大模型技術的迅猛發展&#xff0c;國產模型正逐漸嶄露頭角&#xff0c;尤其是DeepSeek-R3的發布&#xff0c;更是在AI技術社區中引起廣泛關注。而與此同時&#xff0c;國際領先的GPT-4o和Claude-3.5-Sonnet也在不斷迭代升級&#xff0c;持續刷新業界對AI能力的認知。下文將…

城市街拍暗色電影膠片風格Lr調色教程,手機濾鏡PS+Lightroom預設下載!

調色介紹 城市街拍暗色電影膠片風格 Lr 調色&#xff0c;是借助 Adobe Lightroom 軟件&#xff0c;為城市街拍的人像或場景照片賦予獨特視覺風格的后期處理方式。旨在模擬電影膠片質感&#xff0c;營造出充滿故事感與藝術感的暗色氛圍&#xff0c;讓照片仿佛截取于某部充滿張力…

數字后端設計 (一):數字電路設計的「前后端」到底是什么?

—— 想象你在做一道菜——前端設計是寫菜譜&#xff0c;后端設計是進廚房真正炒菜。這篇文章幫你搞懂「芯片設計」里這兩個階段到底在干嘛。 1. 前端設計——寫一份「理想化」的菜譜 任務&#xff1a;用代碼描述芯片的功能。例子&#xff1a;你要做一個自動計算“112”的芯片…

網站301搬家后谷歌一直不收錄新頁面怎么辦?

當網站因更換域名或架構調整啟用301重定向后&#xff0c;許多站長發現谷歌遲遲不收錄新頁面&#xff0c;甚至流量大幅下滑。 例如&#xff0c;301跳轉設置錯誤可能導致權重傳遞失效&#xff0c;而新站內容與原站高度重復則可能被谷歌判定為“低價值頁面”。 即使技術層面無誤&a…

WiFi“管家”------hostapd的工作流程

目錄 1. 啟動與初始化 1.1 解析命令行參數 1.2 讀取配置文件 1.3 創建接口和 BSS 數據結構 1.4 初始化驅動程序 2. 認證和關聯處理 2.1 監聽認證請求 2.2 處理認證請求 2.3 處理關聯請求 3. 數據轉發 3.1 接收客戶端數據 3.2 轉發數據 4. 斷開連接處理 4.1 處理客…

YOLOv2 快速入門與核心概念:更快、更準的目標檢測利器

今天&#xff0c;我們就來聊聊 YOLO 系列的第二代—— YOLOv2&#xff0c;看看它是如何在速度的基礎上&#xff0c;進一步提升檢測精度的。 目標檢測的重要性&#xff1a;讓機器“看懂”世界 想象一下&#xff0c;自動駕駛汽車需要實時識別道路上的車輛、行人、交通標志&…

[蒼穹外賣 | 項目日記] 第三天

前言 實現了新增菜品接口實現了菜品分頁查詢接口實現了刪除菜品接口實現了根據id查詢菜品接口實現了修改菜品接口 今日收獲&#xff1a; 今日的這幾個接口其實和之前寫的對員工的操作是一樣的&#xff0c;都是一整套Curd操作&#xff0c;所以今天在技術層面上并沒有…

Go語言入門到入土——三、處理并返回異常

Go語言入門到入土——三、處理并返回異常 文章目錄 Go語言入門到入土——三、處理并返回異常1. 在greetings.go中添加異常處理代碼2. 在hello.go中添加日志記錄代碼3. 運行 1. 在greetings.go中添加異常處理代碼 處理空輸入的異常&#xff0c;代碼如下&#xff1a; package g…

創維E900V20C-國科GK6323V100C-rtl8822cs-安卓9.0-短接強刷卡刷固件包

創維E900V20C&#xff0f;創維E900V20D-國科GK6323V100C-安卓9.0-強刷卡刷固件包 創維E900V20C 刷機說明&#xff1a; 1、用個老款4G&#xff0c;2.0的U盤&#xff0c;fat32&#xff0c;2048塊單分區格式化&#xff0c; 5個文件復制到根目錄&#xff0c;插盒子靠網口U口&…

視頻分析設備平臺EasyCVR安防視頻管理系統,打造電石生產智能視頻監控新體系

一、背景介紹 電石生產中的出爐工序是整個生產流程中最為繁重且危險的環節。在開堵爐眼的過程中&#xff0c;電石極易發生飛濺現象&#xff0c;尤其在進行吹氧操作時&#xff0c;人員灼傷的風險極高。鑒于此&#xff0c;該工序正逐步由傳統的人工操作模式向智能化方向轉變。然…

Verilog的整數除法

1、可變系數除法實現----利用除法的本質 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2025/04/15 13:45:39 // Design Name: // Module Name: divide_1 // Project Name: // Target Devices: // Tool Versions: // Description: // // Depe…

UniApp + Cursor + Devbox 全欄平臺開發教程:從0到完整項目打造

本文基于B站熱門教程《一口氣學會小程序 / App / H5開發:UniApp教程 + Cursor + Devbox》,https://www.bilibili.com/video/BV1W7QZYMEus/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=a1428945043b2df41c1896acb90d942a,進行全面擴展…

ESP32-idf學習(一)搭建環境和點燈

一、前言 先說一下查到的數據&#xff08;不保證準確&#xff09;&#xff1a; 1、連續四年Wi-Fi MCU全球市場份額第一&#xff0c;產品應用于智能家居、工業自動化、醫療健康等泛IoT領域?&#xff0c;2024 年營收突破 20 億元&#xff08;同比 40%&#xff09;&#xff0c;…

hooker frida版just_trust_me.js 2025升級 支持boringssl unpinning

曾幾何時&#xff0c;我翻版了 Xposed 的 just_trust_me.apk&#xff0c; just_trust_me.js 腳本仿佛是一張通行證&#xff0c;讓我們在 SSL Pinning 的高墻前輕松穿越。 但時代變了。BoringSSL、Cronet、靜態 inline hook、動態 verify callback……一切都變得更加隱蔽和棘手…

通信算法之269 : OFDM信號的循環自相關特性用于無人機圖傳信號識別

OFDM信號的循環自相關特性是其循環平穩性的核心體現,如下: [相關仿真代碼,聯系,提供] 一、循環自相關特性來源 ?循環前綴引入周期性? OFDM符號通過添加循環前綴(CP)形成符號周期結構,導致信號具有循環平穩性?26。每個符號的CP與尾部數據重復,在時延等于FFT長度(N…