Service Worker缓存配额耗尽时需三步定位:1. Application面板查看总存储用量;2. chrome://quota-internals精确查询Cache Storage专属配额及持久化状态;3. 控制台执行navigator.storage.estimate()获取运行时动态配额基准。

当你在开发PWA或调试离线功能时,发现Service Worker缓存写入失败、Cache API抛出QuotaExceededError,或chrome://quota-internals中显示配额异常为0,说明当前网页的缓存配额已被耗尽或未正确分配。必须通过多路径交叉验证才能准确定位实际可用空间与已用额度。
通过Application面板快速查看当前源的缓存用量
这一步操作起来很简单,直接在页面上打开开发者工具就能看到概览数据。
1、在目标网页按 Ctrl+Shift+I(Windows/Linux)或 Cmd+Option+I(macOS)打开开发者工具。
2、切换到 Application 选项卡 → 左侧展开 Storage → 点击 Usage 子项(若未显示,请先刷新一次页面)。
3、右侧将列出当前 origin 的总存储用量(如 “Used: 84.2 MB”)与浏览器估算的硬性配额(如 “~105 MB”)。注意:该数值是 【所有本地存储类型(含Cache Storage、IndexedDB、localStorage等)的合计配额】,并非单独为Service Worker缓存分配的额度。
4、若Usage下方无任何数字,说明Chrome尚未完成配额评估——此时需访问 chrome://quota-internals 手动触发查询。
用chrome://quota-internals精确检查Cache Storage专属配额
这个内部页面暴露了QuotaManager底层策略,能告诉你Service Worker缓存到底被分了多少空间、是否启用持久化权限、以及当前使用量是否真实。
方法一:直接查询当前站点
1、地址栏输入 chrome://quota-internals/ 并回车。
2、在 Origin 输入框中填入完整协议+域名,例如 https://example.com(不能漏掉 https://,否则查不到)。
3、点击 Query 按钮,等待返回结果。
4、在表格中找到对应行,重点关注三列:Usage(当前Cache Storage实际占用字节数)、Quota(分配给该origin的总配额)、Persistent(是否已获持久化存储授权)。若 Persistent 显示 false,说明即使你调用了 navigator.storage.persist(),用户也尚未点击“允许”按钮。
方法二:全局扫描异常配额
1、不填Origin,直接点 Query,页面会列出全部已注册origin的配额快照。
在 Linux 上通过 Chrome 挂载/VNC 自动发布小红书长笔记。Agent 撰写标题和正文后执行 xhs_publish.sh --publish --submit,触发小红书发布。
2、按 Usage 列排序,找出占用接近 Quota 的站点——这些就是最可能触发QuotaExceededError的高危对象。
3、若某站点 Quota 显示为 0,则大概率是注册时域名拼写错误、HTTPS未启用,或被企业策略强制限制;此时需检查Service Worker注册脚本中的 scope 参数是否合法。
在控制台执行navigator.storage.estimate()获取动态配额基准
这是唯一能在运行时获取Service Worker缓存专属配额的方法,结果最贴近真实场景,但依赖页面已加载并执行过storage API。
第一步:确认页面已加载Service Worker脚本
在Application → Service Workers面板中,确保状态栏显示“Ready”或“Active”,否则navigator.storage不可用。
第二步:打开Console面板,粘贴并执行以下代码:
navigator.storage.estimate().then(estimate => { console.log('已用:', estimate.usage, '字节'); console.log('总额度:', estimate.quota, '字节'); console.log('可用率:', ((estimate.quota - estimate.usage) / estimate.quota * 100).toFixed(1) + '%'); });
第三步:观察输出结果。若 estimate.quota 小于 10MB,说明Chrome仍按默认BestEffort策略分配(通常为磁盘空闲空间的 10%~20%,且上限约 10MB);若大于 100MB,则大概率已通过 navigator.storage.persist() 获得持久化权限或启动参数 --unlimited-storage 生效。
⚠️ 注意:该API在部分旧版Chrome( 这个设置页提供的是操作系统级磁盘占用统计,数值比Application面板更精确,适合交叉验证 quota-internals 中的 Usage 是否可信。 1、地址栏输入 chrome://settings/siteData 并回车。 2、在搜索框中输入目标网站域名(如 example.com),确保勾选“显示详细信息”。 3、找到对应条目后,右侧“存储”列显示的 KB/MB 数值,即该 origin 在本地磁盘上实际占满的空间,包含 Cache Storage + IndexedDB + localStorage + Cookies 全部内容。 4、若此处显示 92 MB,而 chrome://quota-internals 中 Usage 只有 12 MB,说明其余 80 MB 来自 IndexedDB 或其他存储机制——此时应返回 Application 面板检查 IndexedDB 数据库大小,而非只盯着Cache Storage。通过chrome://settings/siteData验证整站存储占用真实性










