Firestore持久化监听单文档:断开超30分钟未变更的计费问询
关于Firestore单文档监听的计费疑问解答
针对你提出的「开启持久化后,单文档监听器断开超30分钟重启但文档未变更,是否产生最低计费」的问题,结合Firestore的核心机制和官方文档的隐含规则,我整理了以下结论:
核心前提:单文档监听是查询的特例
首先要明确:单文档监听(比如db.collection("users").doc("user1").onSnapshot(...))本质上是只匹配单个文档的查询监听,因此查询监听的大部分计费规则同样适用于它,只是存在一些细节差异。
针对你的场景的具体结论
当满足「开启持久化 + 监听器断开超30分钟 + 文档未发生变更」这三个条件时:
- Firestore客户端会先对比本地持久化缓存中的文档版本与服务器端的版本哈希值
- 由于文档未变更,服务器仅会返回「版本一致」的确认信号,不会触发读取费用
- 只有当服务器检测到文档有更新,或者本地缓存中没有该文档的有效副本时,才会收取1次读取费用
补充验证方式
如果你想自行验证这个逻辑,可以尝试两种方式:
- 查看Firebase控制台的「计费」页面,观察对应时间段的读取次数是否增加
- 在客户端开启Firestore日志(
FirebaseFirestore.setLoggingEnabled(true)),重启监听器后查看日志中是否出现文档读取的相关记录
内容的提问来源于stack exchange,提问作者Eduardo Yamauchi
相关产品推荐
相关产品推荐

