用于 web 的 firebase 实时数据库是否具有 PWA 的离线功能

Does firebase realtime database for web have offline capability for PWA

我有一个 Web 项目,我在其中使用了很多 firebase 实时数据库,现在我想将我的应用程序转换为 PWA,所以我想要两件事

  1. 当用户安装应用程序时,我想缓存数据库的某些部分
  2. 当用户离线并转到试图从 firebase 下载内容的页面时,我希望从缓存中返回此数据
  3. 当用户进行一些操作时,通常是在线的,我将数据保存在数据库中,我希望 firebase 将其保存到 "cache" 并且当连接出现时 - 将其保存到数据库

看起来 android 的 firebase 可以做到这一点 (ttps://firebase.google.com/docs/database/android/offline-capabilities)

但是当我阅读网络文档时 - 我不确定是否可行 (https://firebase.google.com/docs/database/web/offline-capabilities)

Firebase 实时数据库仅为移动 (iOS/Android) 开发提供离线功能。如果您需要离线持久性,那么您应该选择 Cloud Firestore

您将收到与您在问题中指出的完全相同的功能。每当用户阅读某些文档时,这些文档都会缓存在本地,甚至可以离线使用(完整的 CRUD 操作可用)。有 40MB 的缓存阈值,超过该阈值后最旧的文档将被删除。您可以更改此值,增加或减少缓存量。

启用它:

//For mobile development, it is turned on by default
firebase.firestore().enablePersistence() 
  .catch(function(err) {
      if (err.code == 'failed-precondition') {
          // Multiple tabs open, persistence can only be enabled
          // in one tab at a a time.
          // ...
      } else if (err.code == 'unimplemented') {
          // The current browser does not support all of the
          // features required to enable persistence
          // ...
      }
  });

wrote an article(关于 PWA 系列的一部分)我解释了如何使用 Cloud Firestore 离线持久性来克服 CACHE API 限制,因为它只允许缓存 GET 请求。