<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>浏览器的存储机制 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/%E6%B5%8F%E8%A7%88%E5%99%A8%E7%9A%84%E5%AD%98%E5%82%A8%E6%9C%BA%E5%88%B6/</link><description>Recent content in 浏览器的存储机制 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 17 Jul 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/%E6%B5%8F%E8%A7%88%E5%99%A8%E7%9A%84%E5%AD%98%E5%82%A8%E6%9C%BA%E5%88%B6/index.xml" rel="self" type="application/rss+xml"/><item><title>浏览器的存储机制</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/performance/performance-004/</link><pubDate>Tue, 17 Dec 2024 00:00:00 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/performance/performance-004/</guid><description>&lt;p&gt;浏览器的存储机制涵盖多种技术，目的是满足 Web 应用在不同场景下的数据持久化、缓存和离线访问需求。它们各自具有不同的存储容量、生命周期、安全策略和访问方式，理解这些机制对于构建高效、安全的前端应用至关重要。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="一浏览器存储机制分类"&gt;一、浏览器存储机制分类&lt;/h3&gt;
&lt;h4 id="1-cookie"&gt;1. Cookie&lt;/h4&gt;
&lt;p&gt;最早期的存储机制，主要用于会话管理和身份认证。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;容量限制&lt;/strong&gt;：单个约 4KB，总数有限制；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生命周期&lt;/strong&gt;：可设置过期时间或为会话级；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;访问方式&lt;/strong&gt;：由浏览器自动在 HTTP 请求头中携带，也能通过 JS 访问（除非设置 HttpOnly）；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全性&lt;/strong&gt;：可设置 HttpOnly、Secure、SameSite 防范安全风险。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="2-web-storagelocalstorage-和-sessionstorage"&gt;2. Web Storage（LocalStorage 和 SessionStorage）&lt;/h4&gt;
&lt;p&gt;HTML5 新增的简单键值对存储方案。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LocalStorage&lt;/strong&gt;：永久存储，关闭浏览器数据仍保留，同源可访问；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SessionStorage&lt;/strong&gt;：页面会话存储，关闭标签页即清空；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;容量&lt;/strong&gt;：一般为 5~10MB；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;访问方式&lt;/strong&gt;：同步 API，容易使用但可能阻塞主线程。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="3-indexeddb"&gt;3. IndexedDB&lt;/h4&gt;
&lt;p&gt;浏览器内置的底层结构化数据库，支持事务和索引，适合复杂和大容量数据存储。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;容量&lt;/strong&gt;：远大于 LocalStorage，通常以设备剩余空间为限；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;访问方式&lt;/strong&gt;：异步 API，支持复杂操作；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：离线应用、大数据缓存、文件存储等。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="4-cache-storage"&gt;4. Cache Storage&lt;/h4&gt;
&lt;p&gt;由 Service Worker 管理的请求和响应缓存，用于离线和加速访问。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;容量&lt;/strong&gt;：较大，依赖设备和浏览器策略；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;访问方式&lt;/strong&gt;：异步 Promise API；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：缓存静态资源、接口响应，实现离线支持。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="5-service-worker"&gt;5. Service Worker&lt;/h4&gt;
&lt;p&gt;虽然不是存储机制本身，但作为浏览器后台代理进程，管理 Cache Storage，实现网络请求拦截和缓存策略，是现代离线应用的核心。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;生命周期独立于页面&lt;/strong&gt;，可在后台运行；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;控制页面的网络请求&lt;/strong&gt;，提供离线能力和资源预缓存；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可结合 Cache Storage 和 IndexedDB 进行数据管理&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="二存储机制的生命周期与访问作用域"&gt;二、存储机制的生命周期与访问作用域&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cookie&lt;/strong&gt;：基于域和路径，可设置 HttpOnly、Secure 限制访问；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LocalStorage/SessionStorage&lt;/strong&gt;：基于同源策略，SessionStorage 进一步限定于标签页会话；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IndexedDB 和 Cache Storage&lt;/strong&gt;：基于同源，支持版本控制和升级；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service Worker&lt;/strong&gt;：独立于页面，能控制同源下的所有相关页面。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="三容量限制与性能影响"&gt;三、容量限制与性能影响&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cookie&lt;/strong&gt; 容量最小，且会随每次请求自动发送，影响网络性能；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LocalStorage/SessionStorage&lt;/strong&gt; 适合轻量存储，容量适中；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IndexedDB 和 Cache Storage&lt;/strong&gt; 容量大，适合海量数据和文件缓存；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service Worker&lt;/strong&gt; 通过异步调度，避免阻塞主线程。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="四安全与隐私考虑"&gt;四、安全与隐私考虑&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cookie&lt;/strong&gt; 可被服务器访问，设置 HttpOnly 避免脚本窃取；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web Storage、IndexedDB&lt;/strong&gt; 只能由同源脚本访问，防止跨站数据泄漏；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service Worker&lt;/strong&gt; 需 HTTPS 环境，避免被恶意注入；&lt;/li&gt;
&lt;li&gt;用户隐私模式下，存储行为可能受限，数据不保证持久。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="五应用场景及选择建议"&gt;五、应用场景及选择建议&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;需要与服务器频繁交互、会话维持时用 Cookie；&lt;/li&gt;
&lt;li&gt;存储简单配置、少量数据用 LocalStorage；&lt;/li&gt;
&lt;li&gt;页面会话临时数据用 SessionStorage；&lt;/li&gt;
&lt;li&gt;大规模结构化数据和离线存储用 IndexedDB；&lt;/li&gt;
&lt;li&gt;静态资源及请求缓存用 Cache Storage，配合 Service Worker 提升离线体验和性能；&lt;/li&gt;
&lt;li&gt;Service Worker 负责管理缓存和拦截网络请求，实现 PWA 功能。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="常见考点"&gt;常见考点&lt;/h2&gt;
&lt;p&gt;面试考察点通常围绕存储类型、特点、使用场景、容量限制、安全性和生命周期展开：&lt;/p&gt;</description></item></channel></rss>