首页 > 解决方案 > 如何减少一次又一次的firebase数据库查询?

问题描述

我目前正在 Flutter 中开发一个使用 Firebase 作为后端的电子商务应用程序。我对 Cloud Firestore 有一些担忧和困惑,因此我需要您的帮助。

我面临的一些问题是:

  1. 假设我的收藏中有 1000 种产品,当用户运行并滚动浏览应用程序时,我逐渐想要加载这些产品,问题是每次用户退出并再次运行应用程序时,再次调用数据库以获得相同的数据我已经服务并最终花费了我更多的阅读量。

我不知道如何处理这种情况,也找不到合适的解决方案。

  1. 我想要一种方法来加载产品一次并将其保存在用户的内存中,以便下次用户运行应用程序时,首先它尝试从缓存中加载,在查询之后,服务器获取更多数据并再次保存到缓存。

  2. 我只希望应用程序仅在数据库中有一些更改时才侦听和更新缓存,例如我更改价格或产品名称时。我不想每次用户运行应用程序时都获取。

  3. 我的简单问题是在 Flutter 中管理这种情况的有效方法是什么?请帮助我并就这个问题提供一些指导。

如果您认为有任何视频或博客文章可以帮助我解决这种情况,请同时提及。

标签: firebasefluttergoogle-cloud-firestore

解决方案


这就是我通常做的。

在数据库中保存一个整数变量,指示数据的版本,例如:

版本 = 1

每次重新打开应用程序时,从数据库中读取版本,如果与用户设备本地保存的版本不同,则从在线数据库中重新加载数据。

要在 Flutter 中本地保存数据,您可以使用Hive(非常高性能)或Postgres(适合进行查询,但速度稍慢)之类的数据库

此外,在滚动产品时,如果它们尚未离线保存,请将它们添加到数据库中。

由于数据很多,即使更新一个,也会再次从数据库中下载所有数据。如果您不想从数据库中读取所有内容,而不是保存一个整数变量,您可以保存一个包含添加或修改的产品 ID 的数组,并在保存数据时通过清空数组来仅查询后者


推荐阅读