html存储容量无固定上限,由浏览器、设备等共同决定;localstorage在safari ios常低于5mb,chrome桌面约10mb,indexeddb可达空闲磁盘60%;所有api均不加密,需预检配额、捕获异常、分块存储并避免全量dump。

HTML 存储的容量上限不是固定值,而是由浏览器、设备类型、存储方式和用户环境共同决定的;直接写 localStorage.setItem 存 10MB 数据,在 Safari iOS 上大概率失败,在 Chrome 桌面可能成功,但不代表安全。
不同存储 API 的硬性配额差异极大
别拿“5MB”当标准去设计——它只是常见下限,不是保障线:
-
localStorage和sessionStorage:Chrome 桌面约 10 MB,Safari iOS 实际有效空间常低于 5 MB(尤其在低内存设备或隐身模式下可能直接禁用),Firefox 约 10 MB;写入超限时抛出QuotaExceededError -
IndexedDB:无统一硬限制,Chrome 初始策略约 50–250 MB,后续可扩展至空闲磁盘空间的 60%;但事务提交时仍可能因瞬时配额耗尽而触发AbortError或QuotaExceededError -
Cache API(Service Worker):不单独设限,但计入同源总配额;大量缓存图片/JS 后,localStorage写入也可能突然失败
为什么“写了没报错”不等于“能长期用”
配额不是静态水位线,而是动态协商结果。浏览器会在后台压缩、清理、迁移数据,尤其在存储压力大时:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 用户手动点击“清除浏览数据”,勾选“Cookie 及网站数据”时,
localStorage和IndexedDB都会被清掉(但后者在多数浏览器中默认保留更久) - Safari 在 iOS 17+ 对后台标签页主动冻结 IndexedDB 连接,
transaction可能静默失败而不抛异常 - Android WebView(尤其旧版)对
localStorage实际可用空间常低于 2 MB,且不抛错,只静默截断字符串 - 所有 API 均不加密,敏感字段如
auth_token存进去,等于裸奔
怎么判断当前环境还能写多少
没有标准 API 能读取剩余配额,只能靠试探 + 估算 + 监控:
- 写入前做软预检:维护一个本地计数器
storedSizeKB,每次写入前加权估算(例如 JSON 序列化后new TextEncoder().encode(str).length) - 捕获写入异常:对
localStorage.setItem包一层 try/catch,捕获QuotaExceededError后立即触发清理逻辑(如删最旧的 3 条) - 降级 fallback 必须可执行:当
IndexedDBopen 失败时,不要 fallback 到localStorage,而应转为内存缓存 + URL hash 序列化(location.hash = '#state=xxx'),至少保活本次会话 - 避免“全量 dump”式保存:用户编辑一篇长文档,别等 Ctrl+S 才存整段 HTML 字符串,改用增量 diff + 压缩(如
lz-string)存键值对
超过 20MB 数据该用什么
别硬扛。20MB 是 localStorage 的绝对不可行线,也是多数 IndexedDB 默认策略的警戒线:
- 优先用
IndexedDB,但必须配合分块(chunking):单条记录控制在 512 KB 以内,批量写入用transaction.objectStore().add()而非全量put() - 大文件(如用户上传的图片、PDF)不要存二进制到 IndexedDB,改用
BlobURL +createObjectURL引用,或转为 base64 后切片存(每片 ≤ 256 KB) - 考虑服务端协同:前端只存元数据和最近 3 次操作快照,其余归档到后端临时存储(带 TTL),用
fetch按需拉取 - 真要离线大容量——评估
File System Access API(Chrome 86+,仅安全上下文),但它需要用户显式授权目录,无法静默使用
真正麻烦的从来不是“能不能存下”,而是“什么时候悄无声息地丢了一半”。配额管理必须从第一次 setItem 就开始埋点,而不是等用户反馈“我刚写的笔记没了”。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










