我目前正在使用 Flutter 开发一个电子商务应用程序,它使用 Firebase 作为后端。 我对 Cloud Firestore 有一些担忧和困惑,因此我需要您的帮助。
我面临的一些问题是:
- 假设我的收藏中有 1000 种产品,我想在用户运行和滚动应用程序时逐渐加载这些产品,问题是每次用户退出并再次运行应用程序时,都会再次调用数据库我已经提供过相同的数据,最终会花费我更多的阅读次数。
我不知道如何处理这种情况,我也找不到合适的解决方案。
我想要一种方法来加载一次产品并将其保存在用户的内存中,以便下次用户运行该应用程序时,首先它会尝试从缓存中加载,然后在该查询之后,服务器更多数据并再次将其保存到缓存中。
我只希望应用程序仅在数据库发生某些变化时监听并更新缓存,例如我更改产品价格或标题时。我不想每次用户运行应用程序时都获取。
我的简单问题是,在 Flutter 中管理此类情况的有效方法是什么?请帮助我并就此问题提供一些指导。
如果您认为有任何视频或博客文章可以帮助我解决这种情况,请一并提及。
最佳答案
这就是我通常做的。
在数据库中保存一个整型变量,表示数据的版本,例如:
version = 1
每次重新打开应用时,从数据库中读取版本,如果与用户设备本地保存的版本不同,则从在线数据库中重新加载数据。
要将数据保存在 Flutter 本地,您可以使用类似 Hive 的数据库(非常高性能)或 Postgres (好查询,但有点慢)
另外,滚动商品时,如果还没有离线保存,则添加到数据库中。
由于数据量很大,即使更新一个,也会从数据库中重新下载所有数据。 如果您不想从数据库中读取所有内容,而不是保存一个整数变量,您可以保存一个包含添加或修改的产品 ID 的数组,并在保存数据时通过清空数组仅查询后者
关于firebase - 如何减少一次又一次的firebase数据库查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62633566/