如果我第二天打开应用程序,我是不是会再次在 Firestore 中收取文件读取费用?
Posted
技术标签:
【中文标题】如果我第二天打开应用程序,我是不是会再次在 Firestore 中收取文件读取费用?【英文标题】:Am I charged in Firestore again for document reads if I open the app second day?如果我第二天打开应用程序,我是否会再次在 Firestore 中收取文件读取费用? 【发布时间】:2020-05-23 12:05:56 【问题描述】:我没有找到任何解决方案来避免在使用 get() 时从服务器读取数据。但是,我可能会找到一个解决方案,但我不清楚它是否会起作用。我发现在使用实时功能时,客户端会随着数据的变化而不断更新。所以根据我的理解,如果服务器上没有任何变化,就不会收取读取费用,对吧?
但是,我读到listener should be removed,我明白为什么,我无法理解的是,如果我关闭应用程序(侦听器被删除)并在第二天打开应用程序,我是否会再次为数据收费是前一天缓存的?
我真的很困惑,因为我也读到了:
此外,如果侦听器断开连接的时间超过 30 分钟(例如,如果用户下线),您将被收取读取费用,就像您发出了全新的查询一样。去掉监听器和上网,是不是一回事?
【问题讨论】:
【参考方案1】:我发现在使用实时功能时,客户端会随着数据的变化而不断更新。所以根据我的理解,如果服务器上没有任何变化,就不会收取读取费用,对吧?
到达服务器的每个查询都会引发对查询返回的文档的读取。每当从服务器返回文档时,都需要读取一次。如果您对一组查询结果有一个侦听器,其中只有一个文档在侦听器处于活动状态时发生更改,则读取一次需要花费,因为只有一个文档必须来自服务器,其余文档已经在内存中。它们会一直保留在内存中,直到侦听器被移除。
如果我关闭应用程序(删除了监听器)并在第二天打开应用程序,我是否会为前一天缓存的数据再次收费?
是的。只要结果来自服务器,您就需要为这些读取付费。以服务器为源时,不使用缓存来满足查询结果。
去掉监听器和上网,是不是一回事?
它们不是一回事。删除侦听器表示您已完全完成查询结果。暂时上线并重新上线只会恢复现有查询。
【讨论】:
谢谢道格。你说只要结果来自服务器,你就会为这些读取付费。但我的问题是,如果查询的结果已经存在于缓存中,因为我前一天已经得到它们,我需要为此付费吗? 如果您没有专门查询缓存,那么文档不会来自缓存,除非客户端离线。阅读有关指定查询源的信息。 firebase.google.com/docs/firestore/query-data/… 我没有使用 get(),我正在监听实时更新。简而言之,今天我打开应用程序,我得到了 30 个文档。我关闭应用程序,侦听器被删除。第二天我打开应用程序,监听器已附加,我是否再次为这 30 个文档收费?这 30 个文档是同一查询的结果,在此期间没有进行任何更改。 听起来你还在问同样的问题。无论缓存如何,您都需要为所有结果付费。底线是:除非您离线或明确查询缓存,否则您需要为来自服务器的所有结果付费。以上是关于如果我第二天打开应用程序,我是不是会再次在 Firestore 中收取文件读取费用?的主要内容,如果未能解决你的问题,请参考以下文章