Flutter 使用Firestore防止浏览器侦听器超时导致过量读取的技巧

Flutter 使用Firestore防止浏览器侦听器超时导致过量读取的技巧,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,我有我的FlatterFireStore应用程序和网站的用户,他们监控学校和设施的出勤情况。他们通常一整天都会打开浏览器 因为他们管理整个学校,因为学生们来来去去参加不同的课程,他们监控全天的出勤情况。我不想用分页限制它们的功能,需要实时快照侦听器。我也不能使用缓存,因为我需要实时数据,所以我在Firestore的应用程序和网站上完全关闭了缓存。数据量很小,文档量有点高,因此累积读取量过大 这主要是因为Firestore每30分钟更新一次侦听器,而这些管理员每30分钟执行500多次读取,什么都不

我有我的FlatterFireStore应用程序和网站的用户,他们监控学校和设施的出勤情况。他们通常一整天都会打开浏览器

因为他们管理整个学校,因为学生们来来去去参加不同的课程,他们监控全天的出勤情况。我不想用分页限制它们的功能,需要实时快照侦听器。我也不能使用缓存,因为我需要实时数据,所以我在Firestore的应用程序和网站上完全关闭了缓存。数据量很小,文档量有点高,因此累积读取量过大

这主要是因为Firestore每30分钟更新一次侦听器,而这些管理员每30分钟执行500多次读取,什么都不做……如果他们不关机,每天24小时。不,我不能要求客户改变行为

所以我在找一个把戏。有没有办法将其调整为:

  • 使侦听器保持活动状态,而无需重新读取完整的集合
  • 至少,延长时间或完全消除超时,这样我们就不会重新读取
  • 我可以假设做一个超时窗口,要求用户回来时刷新…但是,我没有找到任何关于如何挂起侦听器的FlatterFire或firebase文档(我根本不想干扰他们的身份验证)

  • 根据我所看到的一切,Firestore有30分钟,以石头刷新为背景。您可以将用户完全注销,也可以继续使用它。不会吧?有什么想法吗?

    使用像Redux这样的框架作为中介-侦听器向Redux发送数据;组件订阅Redux。这有助于将UI与Firestore后端分离。我的应用程序可能有1000条记录可供用户使用,但只有那些在视图中的记录在大多数情况下处于活动状态。也可以(但我还没有写出来)以更精细的规模通过Redux存储进行分页(这样您就可以轻松地“向后翻页”),但在更大的页面上通过Firestore进行分页,频率更低


    我还必须质疑,为什么需要500次“实时”读取—不太可能有任何用户同时查看500条记录。

    ->以某种方式检测不活动(可能只是一个页面上的计时器>5分钟=>用户处于非活动状态)

    ->如果用户处于非活动状态,则会停止加载数据


    ->在UI中显示一个按钮,如“更新”或“谢谢你的建议……我会尽快调查的。对于每个帐户,我有200-300个微用户,他们在应用程序上停留30-60秒,在这段时间内,如果显示昨天的旧缓存数据,则该应用程序不起作用。然后在这组用户中,我有1个或2个管理员用户,他们监视所有这些更新。因此读取组很大,但按比例为少数用户。我使用provider。我觉得我的解决方案可以确保为少数用户提供高功能,但是,30分钟的刷新会破坏我的最佳计划……分页使大量排序和筛选变得复杂。谢谢你的帮助!