【问题标题】:Cost of Firestore snapshot listeners activated by local changes [duplicate]由本地更改激活的 Firestore 快照侦听器的成本 [重复]
【发布时间】:2020-12-13 07:53:55
【问题描述】:

我了解文档的快照侦听器会在创建和激活/提供数据时产生读取。

当激活是由本地写入文档触发时也是这种情况(我认为,数据被反弹回客户端内的侦听器并且数据不会从服务器返回,因为没有区别) ?

即如果您将快照侦听器添加到 99% 的时间都在本地编辑的文档中,那么您现在是否需要至少获得与写入相同数量的读取?

【问题讨论】:

    标签: google-cloud-firestore snapshot


    【解决方案1】:

    如果您将快照侦听器添加到 99% 的时间都在本地编辑的文档中,那么您现在是否需要至少获得与写入相同数量的读取?

    监听器不为文档写入收费。它只对查询读取的文档的更改收费。

    很有可能,尽管不是绝对肯定,您对文档所做的所有写入最终都会向该文档上的活动侦听器收取读取费用,因为每次写入都会命中服务器,然后会通过该更改对侦听器进行回调.您应该准备好接受这笔费用。

    如果客户端应用在写入期间处于离线状态,您将无需为立即侦听器回调付费。只有在实际从服务器检索到更新的文档时才会产生费用。

    如果您希望降低读取成本,您可能希望消除文档写入的抖动。

    【讨论】:

    • 看来我的问题实际上与此重复:stackoverflow.com/questions/55919435/… 但简短的回答是“否”——由本地更新触发的侦听器不会导致读取。但是,在运行具有重复写入和快照侦听器 (1) 的测试后,控制台 (2) 中记录了相同数量的读取和写入,但我在侦听器中收到的 metadata.fromCache 仅在前几次写入中为真然后是'假'......所以我想我在某个地方丢失了线程......
    • “当每次写入访问服务器时,都会通过该更改对侦听器进行回调。”这完全符合我对这个官方描述的理解:youtube.com/watch?v=3aoxOtMM2rc&t=4m12s
    • 没有看到你的代码并观察结果,我没有什么可以添加的。
    • 我看不出有冲突。我区分了 立即 触发器的非成本(离线时会发生,因此甚至不会发生计费)与 最终 完整读取的成本这总是发生,而只有由于同步而发生。
    • 如果来自服务器的同步快照与之前从缓存中传递的快照没有什么不同,则不会有另一个回调 - 应用程序已经拥有最新数据。但这并不意味着同步是免费的。如果您想从服务器获取本地更改和最终更改的回调,为了区分两者,您必须要求侦听器为您提供元数据更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多