新navigator.storageAPI 在存储标准中定义,并在 Chrome 和 Firefox 中受支持。它使网络应用程序能够使用他们的网站存储包括(localStorage、IndexedDB 和 Service Worker 缓存)来持久化,如果用户的设备存储空间不足,它可以防止浏览器自动清除它。但是,如果用户手动清除他们的浏览数据,持久存储仍然会被清除。
如果系统在清除所有非持久性数据后仍处于存储压力下,则用户将需要手动清除任何剩余的持久性存储。
请求使站点存储持久化
网站可以通过调用该navigator.storage.persist方法请求使其(所有)站点存储持久化。navigator.storage.persist().then((granted) => {
if (granted) {
// e.g., inform users that their data is available offline
}
});
Chrome 会自动在参与度得分为1或已“添加到主屏幕”的网站上授予此权限;如果没有满足任何条件,请求将被自动拒绝。另一方面,Firefox 会提示用户:

Firefox 提示用户允许网站在持久存储中存储数据
您可以在chrome://site-engagement页面上查看您自己的不同网站的网站参与度分数。
获取站点存储使用情况和配额估计
该navigator.storage.estimate方法返回一个网站当前用于站点存储的空间的估计值,以及该网站总共有多少空间可用的保守估计值。例如,Web 应用程序可以使用此信息来确定缓存多少文件以供离线使用。navigator.storage.estimate().then(({ usage, quota }) => {
// usage = used storage space
// quota = total available storage space
});
此 API 返回的数字大致对应于 Chrome DevTools 的应用程序面板中显示的信息:
Chrome DevTools 中的应用程序面板显示站点的已用存储空间和总可用存储空间

如果网站的存储使用量超过其存储配额,QuotaExceededError则会抛出 a。请注意,“不透明响应”,即缺少正确 CORS 标头的跨域响应,最小大小为 7 MB(这是一种保护措施)。
翻译于:https://webplatform.news/issues/2018-11-07
网友回复
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?
js在浏览器中如何使用MediaStream与MediaRecorder实现声音音频多轨道混流?