web storage 的存储限制按浏览器和源动态分配,通常为2.5 mb至10 mb;chrome约5–6.5 mb,firefox标称10 mb但按一级域名共享,safari(ios)低至2.5 mb且可能主动清理,edge约5–10 mb;按utf-16字节计算,需用blob估算大小并捕获quotaexceedederror异常应对超限。

主流浏览器常见配额范围:
- Chrome:约 5–6.5 MB(受磁盘空间和当前 profile 使用情况影响)
- Firefox:标称 10 MB,但按一级域名共享(如 baidu.com 下所有子域共用)
- Safari(iOS):低至 2.5 MB,且空闲时可能主动清理数据
- Edge:与 Chrome 接近,约 5–10 MB
关键细节:按 UTF-16 字节计算,不是字符数
你存一个对象,先 JSON.stringify(),每个中文字符占 2 字节,引号、逗号、缩进空格也都算字节。例如:{"name":"张三","age":25} 实际占用远大于 14 个字符——JSON 序列化后是字符串,长度以字节计。
如何预估是否超限
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
function estimateSize(obj) {
return new Blob([JSON.stringify(obj)]).size;
}
调用 estimateSize(myData) 可提前判断是否可能超出 5MB。
<p><strong>超限时的表现与应对</strong></p>
<ul>
<li>直接抛出 <code>QuotaExceededError 异常,不会静默失败
JSON.stringify(obj, null, 0))、删旧键、或切换到 IndexedDBlocalStorage.length 或循环 key(i) 清空——大数据量下性能极差;改用命名前缀(如 myapp:cache:)再精准 remove别混淆:它和 Cookie 的 4KB 不是一类限制
Cookie 的 4KB 是 HTTP 协议对请求头大小的硬性约束,而 Web Storage 的 5MB 是浏览器为本地磁盘缓存区划出的独立配额,不参与网络传输,也不受请求频率影响。 不复杂但容易忽略。Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










