firebase缓存:firebase高速缓存查询结果或维护离线数据库



firebase缓存对我来说仍然是一个谜。

我正在通过两种不同的方法查询相同的实时数据库。该数据库已启用

想象有6条目1, 2, 3, 4, 5, 6

  1. 单个值侦听器以获取最后5个条目(由于启用了持久性,请始终从缓存返回([ 2, 3, 4, 5, 6 ]
FirebaseDatabase.getInstance().getReference(path).query.orderByKey().limitToLast(count)
  1. 另一个值侦听器在上次获取查询之后以获取值(返回最新值(,如果将7添加到上述列表中,它将返回7

但是,当我第二次再次运行第一个查询时,它会返回相同的值[2, 3, 4, 5, 6],而如果firebase是缓存值而不是查询结果,则应返回3-7

firebase实时数据库和firestore均在本地缓存数据。如何以及何时下载数据的细微差别有所不同,但本质上遵守实时数据库中的简化模型:

  • 第一次在新路径数据上注册听众是从服务器下载。请注意,如果有几个听众在同一棵子树上,它们仅下载一次(例如/foo和/foo/bar,只能下载一个AS/foo/bar可以重复使用/foo的数据(不算是因为他们只使用父母的数据(,
  • 从那时起,客户将发送一个表示当前的哈希数据到服务器,仅接收Deltas(更改的记录(。
  • 这仅在使用on((而不是一次((操作时适用。
  • 如果启用离线持久性,您将有一个本地缓存即使应用程序以离线模式启动,数据的副本也是如此。然而,当应用上网时,仍然需要数据,不使用三角洲。

firestore的工作方式有所不同,我不确定这些细微差别,但是我会尝试在这里记录下来以供参考。

相关内容

最新更新