【问题标题】:Two StreamBuilder using one stream(); Will it increase the number of reads?两个 StreamBuilder 使用一个 stream();它会增加读取次数吗?
【发布时间】:2023-03-10 23:44:01
【问题描述】:

我有两个屏幕(脚手架),我正在考虑在两个 StreamBuilder 中使用一个 stream()。我的问题是我会被收取双重阅读费用吗?还是读就相当于一次读?

【问题讨论】:

  • 您是否得到了相同查询的答案,因为我没有得到明确的答案?
  • 不,除非您创建了一个单独的流函数并在两个 StreamBuilders 上使用它。但是,我发现在多个 StreamBuilder 上使用单个流可能会导致其他流构建器的加载条不确定。当我使用 Api boolean 时,这发生在我身上。我建议广播你的流。如果您不多次运行主流功能,它将为您节省一些阅读量。希望这可以帮助。 @vnaren001
  • @RajA 我确实遇到了你现在所说的问题,我被困住了我想重用已经在其他流构建器中运行(订阅)的流连接,你能从我的问题列表中回答吗

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

Firestore 客户端会尽量减少必须从服务器读取的数据量。当然,这取决于您的代码,但在大多数情况下,会多次重复使用已读取的数据 - 这样您就不会再次被收费。

一些例子:

  • 如果两个构建器都使用相同的流,则第二个构建器的数据将来自已为第一个读取器准备好的内存。所以第二个建造者不会收费。

  • 如果两个构建器都使用自己的流,通常还会有很多重用。如果流同时监听,SDK 将尽可能重用它们之间的数据。

  • 如果您启用了磁盘缓存(默认情况下在 iOS 和 Android 上启用),如果流没有同时处于活动状态,它们甚至会共享结果。

【讨论】:

  • 但是当我在一个类中创建一个 Stream 函数并将该 stream() 绑定到两个不同的 StreamBuilders 时,当我导航到另一个屏幕时 stream() 再次被调用。这意味着正在发送增加读取的请求。另外,当您将 stream() 分配给 Stream myStream;流仅响应单个流构建器和两者。 @Frankvanpuffelen
  • 您可能想尝试一下。客户端尝试最小化从服务器检索数据。
  • 它会增加读取量吗?如果是,如何最小化它,因为 firestore 的成本比我想象的要高? @Frank van Puffelen
猜你喜欢
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多