我可以使用 Firestore 快照侦听器仅侦听缓存中的更改吗?

问题描述 投票:0回答:1

截至目前,我想使用 Firestore 的 get 函数和文档游标来对我的数据进行分页。但是,我希望有某种方法可以在设备上本地更改查询结果中的项目时本地更新这些项目。理想情况下,如果有某种方法使用快照侦听器仅侦听缓存中的更改,那么我将能够大幅减少总读取次数,因为我只需要获取第一个(10?或您设置的任何限制) )来自服务器的文档而不是整个集合,如果用户群增长,可能会超过 1000 个文档。我倾向于可能必须使用我自己的一些自定义缓存实现,但当 Firestore 已经提供缓存功能时,这似乎是多余的。任何见解将不胜感激! :)

ios swift firebase google-cloud-firestore
1个回答
1
投票

更新(2024 年 8 月):我下面的原始答案在这两个方面现在已经过时了:

  • SDK 中的监听 API 现在可以选择仅监听本地缓存中的更改。这意味着您不再需要禁用整个客户端的网络,但您可以对特定侦听器应用仅缓存侦听。请参阅此推文中的代码示例,该代码示例采用 JavaScript - 但它适用于所有客户端 SDK。
  • Firestore 在其客户端 SDK 的读取性能方面取得了重大改进。
    如果您现在为客户端缓存定义索引(类似于您一直必须为服务器端数据库定义的索引),您可以预期性能达到
    O(m log n)
    的顺序。虽然这还不如服务器端性能那样可扩展(
    O(m)
    ),但它比以前的 SDK 性能要好得多。

原答案👇

如果您使用

onSnapshot
侦听器并为 Firestore 客户端禁用网络,这确实是可能的。

请记住,Firestore 的本地缓存不使用与服务器端实现相同的索引策略,并且您通常看到的 Firestore 性能保证仅适用于服务器端。通常:性能最初会很好,但如果离线时间较长,性能会变得更差。

© www.soinside.com 2019 - 2024. All rights reserved.