在渐进式Web应用程序中是否可以实现真正的持久存储?

时间:2019-06-21 18:39:46

标签: progressive-web-apps

我正在阅读this关于PWA的脱机存储的指南,其中描述了两个存储API,即Cache API和IndexedDB,但是似乎这两个存储选项都不是真正持久的。缓存API在设计上是临时的,当用户清除其浏览器缓存时,可以擦除IndexedDB数据。

那么,是否有可能在PWA中拥有真正的持久存储?我想做的是这样的:

  1. 用户通过智能手机访问我的网站,并且我使用JavaScript生成了唯一的ID。
  2. 他们在iOS上按下“添加到主屏幕”或在Android上按下“添加到主屏幕”栏。
  3. PWA已添加到他们的手机中。此时,我想永久存储该唯一ID。

有什么办法可以做到?也许我不知道的API?我只需要一个很小的唯一代码,因为该PWA并非旨在让用户使用Cookie登录。

2 个答案:

答案 0 :(得分:0)


用户可以删除PWA(如果已安装在Android上),并清除其PWA中浏览器对所有内容的缓存。
然后,如果他们再次访问,则需要为他们生成一个新的ID。
但是,如果您没有与唯一用户绑定的登录后端,则不会知道其先前的ID。

答案 1 :(得分:0)

正如Mathias所述,仅PWA不可能实现您的目标,因为用户可以擦除所有先前生成的数据。

因此,长话短说,您必须使用其他解决方案来确保“真正的持久性存储”。

例如在个人PWA项目中,我使用 Cloud Firestore 。它还提供了一个非常慷慨的免费层,您甚至可以使用它进行离线持久化,从而为您的应用程序授予完整的CRUD操作(即使在离线状态下也是如此)。
服务工作者通过Cache API,仅允许缓存GET Requests,而不能缓存POST

我在SO上为此写了another answer。并且here可以找到官方文档。