根据 MDN 文档 浏览器存储的数据可以在三种情况下被驱逐:
对于第一种情况 - “存储压力驱逐” - 文档提到可以通过使用
navigator.storage.persist()
来避免数据丢失
这是
navigator.storage.persist()
有效果的唯一情况,还是在其他情况下也有效果?
我特别担心 iOS 上 Safari 的“主动驱逐”,因为数据可以在 7 天不活动后被删除
是的,它对所有情况都有影响。根据规范
未经用户同意,持久存储桶无法清除
因此,用户代理(浏览器)不应尝试删除数据,无论是由于存储压力还是在未经用户批准的情况下不活动
您也可以在 MDN 示例 中看到它
if (persistent) {
console.log("Storage will not be cleared except by explicit user action");
}
请注意,用户仍然可以随时删除数据,因此如果数据确实敏感,您应该在某处保留其备份。正如阅读这里
服务器设置的 Cookie 不受此驱逐影响
因此您可以在 cookie 中存储一个 id,然后使用该 id 在服务器中保留数据备份,以防如果客户端上的某些数据丢失,您的应用程序可能会崩溃。客户数据永远不可靠,所以请记住这一点。但如果用户授予使用权限
persist
,那么它应该不会被自动删除。