PWA应用程序中的IndexedDB持久性



PWA应用程序存储(IndexedDB(无法提供数据持久性。

如果PWA固定在主屏幕上,则可以通过清除浏览历史记录来清除浏览器中的所有应用程序数据。

用户可能不清楚清理浏览器数据会影响固定的应用程序,并且未同步的数据会丢失。

有什么办法可以避免这种情况吗?我现在看到的唯一方法是回到原生应用程序。

浏览器中的清除存储机制是让用户控制他们的设备。

这就是为什么作为一个应用程序,您永远不应该(本机或web(假设您缓存的资产是缓存的。

如果确保核心资产和数据持久化对您来说非常重要,那么在服务工作者启动时,您需要进行某种完整性检查。这样,您就可以在应用程序脱机时恢复缓存状态。

你还需要意识到,操作系统,看着你的iOS,会在感觉到的时候清除数据(想想可用磁盘空间变得至关重要的时候(,这会让你失去控制。据我所知,它也适用于原生应用程序。

我不知道该怎么办。Chrome中的"清除存储"功能(例如(正是这样做的。我认为用户能够从自己的设备中删除任何数据是合理的,但我同意这对开发人员来说不是一个好情况。

这是不可能的。

存储API提供了一种StorageManager.persist()方法,用于请求用户明确允许在用户自己删除之前保留数据:

if (navigator.storage && navigator.storage.persist)
navigator.storage.persist().then(function(persistent) {
if (persistent)
console.log("Storage will not be cleared except by explicit user action");
else
console.log("Storage may be cleared by the UA under storage pressure.");
});

如果本地存储空间不足,用户代理将开始自动修剪缓存的资源(设置为"持久"的资源除外(。但是,如果用户自己选择清除本地数据,则无法防止这种情况发生。

据我所知,没有任何事件可以拦截来检测用户的浏览器清除操作。

参见API参考文件:https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/persist

最新更新