Firestore + Ionic Angularfire 读取计数和缓存持久

Firestore + Ionic Angularfire Read Count & Cache Persistent

我想使用 Ionic 4 + Firestore 为应用程序提供离线和实时同步功能。

目标部署到原生应用(iOS、Android)、电子应用(Windows和Mac)、PWA。

  1. Firestore 本地缓存是否在混合应用程序中持久存在? 使用什么类型的存储 firestore 缓存? 会不会是像 localstorage 这样的东西,会不时被 android / iOS 删除/当存储空间不足时。

  2. 我正在使用以下代码进行测试并启用了 enablePersistence,离线模式工作正常。 但它似乎计算了每次应用程序启动时读取的所有文档。 例如,我有 100 个文档。

一个。当应用程序首次启动时,它应该算作 100 次读取,因为它将所有数据同步到本地缓存。

b。当我第二次启动该应用程序时,假设没有更新文档,它不应该算作任何阅读,对吗?

c。因为从我的监控来看,每次启动应用程序时读取计数都会增加。

d。是否有可能,没有更新文档,但我的代码强制从服务器获取数据然后消耗读取计数?

谢谢。

getChatMessages(groupId) {
    return this.db.collection(`groups/${groupId}/messages`, ref => ref.orderBy('createdAt')).snapshotChanges().pipe(
      map(actions => actions.map(a => {
        const data = a.payload.doc.data();
        const id = a.payload.doc.id;
        return { id, ...data };
      }))
    );
  }

我猜你说的是离线data,我想你的问题可以通过文档来回答。

1.1。 firestore 本地缓存是否在混合应用程序中持久存在? 它应该是因为该功能附带了您应该在混合应用程序中使用的客户端库。 来自 this doc:此功能会缓存您的应用正在使用的 Cloud Firestore 数据的副本,因此您的应用可以在设备离线时访问数据。是的,它是本地存储。

1.2。使用什么类型的存储 firestore 缓存? 来自 this doc:Cloud Firestore 是一个云托管的 NoSQL 数据库。您将数据存储在文档中,其中包含映射到值的字段。

2. a - 你说:“当应用程序首次启动时,它应该算作 100 次读取,因为它会将所有数据同步到本地缓存”,但如上所述,Firestore 只会加载你的应用程序正在使用的数据,所以大部分是你的正在查看总数据的一部分(100 个文档)。
b-关于您关于假设不修改文档的说法,无论如何您的应用程序都会同步数据,这已经意味着验证请求。在 this doc 处声明: Cloud Firestore 客户端库自动管理在线和离线数据访问,并在设备重新在线时同步本地数据。
c- 这个说法是正确的,指向我之前指出的那句话。