我正在开发一个Flutter应用程序,该应用程序从Firestore提取了341个文档,经过2天的分析,我发现我的读取请求增加太多了。因此,我在 stackdriver指标浏览器上绘制了一张图表,从中我知道我的应用程序一次只读取341个文档,而firebase控制台正在增加我的阅读量。
现在,问什么困扰着我,
1)当我们在控制台上看到数据时,如何考虑读取?如何减少读取请求?基本上有341个文档,但是每当刷新控制台时,它就会显示600多个读取。
2)如图所示,文档读取有两种类型'LOOKUP'和'QUERY',它们之间的确切区别是什么?
3)我正在通过一个实例从Firestore获取数据,当我打开应用程序时,图表显示 1个活动客户端,这很酷,但是在接下来的5分钟内,活动客户端的数量开始增加。
有人可以向我解释为什么会这样吗?
对于最后一个问题,我尝试禁用所有服务帐户,然后再次打开我的应用程序,但又得到了同样的东西。
Firestore.instance.collection("Lectures").snapshots(includeMetadataChanges: true).listen((d){
print(d.metadata.isFromCache);//prints false everytime
print(d.documents.length);// 341
print(d.documentChanges.length);//341
});
这是我正在使用的代码段。当应用启动时,它仅运行一次。
答案 0 :(得分:2)
我会尽力回答您的问题:
当我们在控制台上看到数据时如何考虑读取,我该如何处理 减少我的阅读请求?基本上有341个文档,但是 每当我刷新控制台时,就会显示600多个读取。
除了您从控制台访问Firestore数据库之外,还取决于您查询Firestore数据库的方式,因此会考虑读取,因此使用Firebase控制台会产生读取,即使您在新的情况下仍使控制台保持打开状态以进行其他操作发生数据库更改时,这些更改也会自动引起读取。从服务器读取的任何文档都将收取费用。读取来自哪里都没有关系。控制台应该包含在其中。
选中此official documentation under the "Manage data"标题,您会看到一条注释:“注意:在控制台中执行的读取,写入和删除操作将计入您的Cloud Firestore使用情况。”
说,如果您认为与此有关,可以直接与Firebase support联系以获取更详细的答案。
但是,如果您选中free plan of Firebase,则会发现每天有5万次免费读取。
为此我找到的解决方法(感谢Dependar Sethi)
您可以找到他的完整解决方案here。
此外,您可以优化查询,但是只想使用where() method和pagination with Firebase来检索想要的数据
您可以在图片中看到两种类型的文档读取 “ LOOKUP”和“ QUERY”之间的确切区别是什么?
我想它们之间没有重要区别,但是“ QUERY”正在获取实际数据(当您调用data()方法时),而“ LOOKUP”正在获取这些数据的引用(不调用data()方法)。
我正在通过一个实例从Firestore获取数据,当我 打开我的应用程序,图表显示1个活跃的客户端,这很酷,但是在 接下来的5分钟,活动客户端的数量开始增加。
对于这个问题,考虑到您在Stackdriver中选择的指标,我可以看到3个连接的客户端。并按照decription of "connected client"指标:
活动连接数。每个移动客户端将具有一个连接。 admin SDK中的每个监听器都是一个连接。每60秒取样一次。采样后,长达240秒看不到数据。
因此,请检查:此实例已连接多少个移动设备以及您的应用程序中有多少个侦听器。所有这些的总和就是您在Stackdriver中看到的已连接客户端的实际数量。