上一篇
html5本地存储大小
- 行业动态
- 2025-05-09
- 2
HTML5本地存储中,
localStorage
通常限制为5MB左右(各浏览器略有差异),而 IndexedDB
无明确容量限制,适合
HTML5本地存储类型与大小限制
HTML5 提供多种本地存储机制,不同存储类型的容量限制和使用场景存在差异:
localStorage
和 sessionStorage
特性 | 说明 |
---|---|
存储容量 | 通常为 5MB(不同浏览器可能有细微差异) |
持久性 | localStorage :永久保存,除非手动清除sessionStorage :页面会话结束即清除 |
作用域 | 同源(协议、域名、端口)的同一窗口/标签页 |
数据类型 | 仅支持字符串键值对(需手动序列化/反序列化复杂数据) |
浏览器支持 | 现代浏览器均支持 |
注意:
- 部分浏览器(如 Firefox)允许通过配置扩展存储上限(需修改
about:config
中的dom.storage.enabled
和dom.storage.default_quota
)。 - 实际可用容量可能因浏览器设置或安全策略(如隐私模式)而受限。
IndexedDB
特性 | 说明 |
---|---|
存储容量 | 通常为 250MB~500MB(可通过提示用户请求更大空间,部分浏览器无上限) |
持久性 | 永久保存,除非手动删除数据库或清除浏览器数据 |
作用域 | 同源(可跨窗口/标签页共享) |
数据类型 | 支持结构化数据(如对象、数组),需通过 API 操作 |
浏览器支持 | 现代浏览器均支持 |
特点:
- 采用数据库形式存储,适合大量结构化数据(如离线应用、缓存)。
- 可通过
IDBDatabase.setVersion()
触发版本升级,自动迁移数据。
Web SQL Database
(已弃用)
特性 | 说明 |
---|---|
存储容量 | 依赖浏览器实现,通常较小(如 Chrome 限制为 50MB) |
持久性 | 永久保存 |
作用域 | 同源 |
数据类型 | 关系型数据库(SQL 语法) |
浏览器支持 | 现代浏览器已逐步弃用,推荐使用 IndexedDB |
File System API
(极少使用)
特性 | 说明 |
---|---|
存储容量 | 依赖用户授权,理论上无上限(实际受系统存储限制) |
持久性 | 永久保存 |
作用域 | 同源 |
数据类型 | 文件系统(需用户显式授权) |
浏览器支持 | 仅部分浏览器支持(如 Chrome) |
常见问题与解答
问题1:如何检测当前 localStorage
剩余空间?
解答:
可通过尝试存储数据并捕获异常来估算剩余空间。
function getLocalStorageSpace() { try { const testKey = '_test_space_'; const maxLength = 5 1024 1024; // 5MB for (let i = 0; i < maxLength; i++) { localStorage.setItem(testKey, 'a'.repeat(i)); } localStorage.removeItem(testKey); return maxLength; // 返回总容量(需扣除已用空间) } catch (e) { return i; // 返回实际剩余空间 } }
注意:此方法可能因浏览器性能或安全限制不准确,建议仅用于调试。
问题2:为什么存储大量数据时应优先选择 IndexedDB
而非 localStorage
?
解答:
- 容量限制:
localStorage
最大仅 5MB,而IndexedDB
支持数百 MB 甚至更高(可动态申请)。 - 数据结构:
IndexedDB
支持索引、事务和复杂查询,适合结构化数据;localStorage
仅支持简单键值对。 - 性能:
IndexedDB
设计为异步操作,适合大规模数据读写;localStorage
同步阻塞可能影响体验。 - 兼容性:
IndexedDB
是现代浏览器标准,而localStorage
在旧浏览器中更