如何撤销navigator.storage.persist()操作?如何恢复缓存存储至尽力而为模式?
关于撤销存储持久化及恢复Cache Storage模式的解答
1. 如何撤销通过navigator.storage.persist(() => {})执行的持久化存储操作?
目前浏览器并没有提供直接调用的API来主动撤销已通过navigator.storage.persist()设置的持久化权限,但有几种间接方式可以实现类似效果:
- 清除站点全部存储数据:当你清除当前网站的所有存储数据(包括LocalStorage、SessionStorage、Cache Storage、IndexedDB等)时,浏览器会重置该站点的存储持久化状态,回到默认的
best-effort模式。你可以通过浏览器开发者工具的Application面板,或者浏览器设置里的站点数据清除功能来操作。 - 用户手动调整权限:部分浏览器允许用户在站点权限设置中手动修改存储持久化权限,比如Chrome的「站点设置」里找到「存储」选项,将其从「允许持久存储」改回默认状态。
另外要纠正一个写法问题:navigator.storage.persist(() => {})的用法并不规范,正确的Promise式调用应该是:
navigator.storage.persist() .then(persisted => { console.log(persisted ? "持久化已启用" : "持久化未启用"); });
如果要检查当前站点的存储持久化状态,可以用:
navigator.storage.persisted() .then(persisted => { console.log(`当前存储状态:${persisted ? "持久化" : "best-effort"}`); });
2. 是否存在方法可将已设置为持久化的Cache Storage恢复为best-effort模式?
浏览器的存储持久化策略是站点级别的,而非针对单个存储类型(比如Cache Storage、IndexedDB)单独设置,所以没有专门的API单独修改Cache Storage的模式。要将其恢复为best-effort,本质就是撤销整个站点的存储持久化权限,可用的方法和上面一致:
- 通过浏览器开发者工具清除该站点的Cache Storage数据,同时重置站点存储权限;
- 引导用户在浏览器的站点权限设置中手动关闭持久存储权限;
- 清除整个站点的所有存储数据,这会让浏览器将该站点的存储状态重置为默认的
best-effort。
简单来说,只要站点的持久化权限被取消,包括Cache Storage在内的所有可持久化存储类型都会自动回到best-effort模式。
内容的提问来源于stack exchange,提问作者Imamudin Naseem
相关产品推荐
相关产品推荐

