if (navigator.storage && navigator.storage.persist) {
navigator.storage.persist().then(persistent => {
if (persistent) {
console.log("Storage will not be cleared except by explicit user action");
} else {
console.warn("Storage may be cleared by the UA under storage pressure.");
}
});
}
4条答案
按热度按时间gt0wga4j1#
它类似于
localStorage
,所以它是跨会话的,意味着重启浏览器或系统不会影响其中存储的内容。但是,用户可以像清除cookie一样清除它。所以它就像持久cookie一样,你不信任它从服务器端,你总是需要检查它的完整性。xienkqul2#
Persistent Storage在Chrome v52和Firefox v55中已经可用。但其他浏览器的支持并不可靠。您必须测试永久存储是否可用并做出相应React。
Chrome需要权限才能使用此功能。如果满足以下任一条件,则在调用
navigator.storage.persist()
时将自动授予此权限:此列表来自article outlining Chrome's implementation,它会定期更新有关此主题的新信息。
xmjla07d3#
IndexedDB的数据属于一个type of temporary.所以这些数据可以随时被擦除。
这些数据大小/生命周期由非常新的Quota Management API管理。
将来,IndexedDB可能会使用持久类型(不太可能,也不是好主意)。
jpfvwuh44#
从2022年起,IndexedDB是一种持久性的数据存储类型,因此,如果用户选择将其逐出,它就会被逐出。
注:引入Storage API后,“永久”文件夹可视为过时;“permanent”文件夹仅存储IndexedDB持久类型的数据库。无论箱式模式是“best-effort”还是“persistent”,数据都存储在/storage/default下。https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria
因此,如果用户注销并再次登录,则用户可以像注销前一样访问数据。