【发布时间】:2019-06-09 19:54:33
【问题描述】:
因此,在我的 Firestore 数据库中,我有大约 2000 个包含图像(blob)的文档,这些文档带有一些标签来对它们进行分组、排序并在本地设备上搜索它们。在我的应用程序中,图像存储在本地 SQLFlite 数据库中,用户可以离线查看它们,还启用了 Firestore 离线持久性。当设备网络连接打开时,Firestore 侦听器会再次读取我的所有查询,因为我的应用程序会根据我用于对图像进行分类的标签显示我的图像,即使我的 Firestore 数据库中没有任何更改。主要原因是 30 分钟规则:
“另外,如果监听器断开连接超过 30 分钟(对于 例如,如果用户离线),您将被收取阅读费用 如果您发出了全新的查询”
因此,当我的本地数据库和 Firestore 数据库没有更改时,在最坏的情况下,我将每 30 分钟为我的图像标签引起的所有查询收费,这可能会导致用户最多读取 10000 次.
当我们谈论最大值时,我们低估了“最小值”的情况。如果用户每天打开我的应用 4 次,可能会导致 1000 次读取,我认为这也很昂贵。
我正在考虑一些解决方案: 1-在打开应用程序时使用某些代码禁用 Flutter 应用程序网络连接的任何方法?例如,如果应用打开时有网络连接,则在接下来的 24 小时内,无论手机网络连接是否打开/关闭,应用都将无法连接互联网。 2- 有什么选择吗?
我知道我有点误用 Firestore,但我的数据库可能每天会更改一次,那么为什么要在每 30 分钟内一遍又一遍地读取每个查询呢? 作为一个业余开发者,任何想法都值得赞赏,非常感谢。
编辑: 3-使用实时数据库+云存储而不是使用带有blob编码图像的Firestore怎么样?我不知道实时数据库是否有一些被动计费方式,例如 Cloud Firestore 中的 30 分钟规则。
【问题讨论】:
标签: firebase flutter google-cloud-firestore listener