我试图了解是否需要实现额外的缓存逻辑以减少未来应用程序的读取次数。 我读过有关
Firebase
的内容,似乎我只在文档尚未在缓存中时才收取读取费用。也就是说,如果我查询整个集合,但只有一个文档是新的,只要我启用了持久性和缓存,我只需支付一次读取费用。 正确吗?
如果是的话,Firebase 似乎附带了所有需要的缓存逻辑,以防止每次应用程序启动时发生不必要的读取。假设我的数据库中有大约 500 个文档和 10000 个日常用户,那么,鉴于我不创建新文档,我将只有
新用户 * 500 + 现有用户 * 应用程序启动 * 每个会话的查询
读取,因为每次查询某项内容时都会收取一次读取费用。
如果我所说的不正确,我将非常感谢您了解阅读实际如何收费的见解。
也就是说,如果我查询整个集合,但只有一个文档是新的,只要我启用了持久化和缓存,我就只需要支付一次读取费用。这是正确的吗?
不,那是不正确的。
默认情况下,所有查询结果都来自后端,您需要为每个查询读取的每个文档付费。仅当后端不可用(您的应用程序处于离线状态),或者您的查询专门从缓存中请求文档(使用源选项)而不是后端时,才会使用本地缓存。
来自链接文档:
默认情况下,get 调用将尝试从数据库中获取最新的文档快照。在支持离线的平台上,如果网络不可用或请求超时,客户端库将使用离线缓存。
您可以在 get() 调用中指定源选项来更改默认行为。您可以仅从数据库获取并忽略离线缓存,也可以仅从离线缓存获取。
另请参阅: