Firestore读取次数计算依据及核心统计规则相关问题咨询
Firestore 读取次数(Reads)定义与计算规则
基础定义
Firestore 读取次数统计的是所有从服务端获取文档数据的请求行为,无论请求来源是客户端SDK、服务端API、官方控制台还是其他第三方工具,只要请求触发了服务端返回文档数据,都会被计入读取次数。
核心计算逻辑
- 单次查询返回N条文档,会计为N次读取,即便你仅需要文档中的单个字段,或是用
select()指定返回字段,也按实际返回的文档数量计数,不会减少读取次数。 - 查询不存在的文档,也会计为1次读取。
- 从客户端离线缓存中读取数据,不计入服务端读取次数统计。
- 事务、批量读取操作按照实际返回的文档数量计数,无额外折扣。
- 实时监听器(
onSnapshot)的计数规则:- 首次绑定监听器时,拉取到多少条匹配文档,就计数多少次读取
- 后续仅会对发生变更、同步到客户端的文档计数,无变更的文档不会重复计数
- 监听器断开连接超过30分钟后重连,会重新全量拉取匹配文档,按拉取数量重新计数
- 分页查询按照每次请求实际返回的文档数量分别计数。
控制台静置产生读取的原因
你观测到的静置Firebase控制台10分钟产生600次读取的现象,完全来自控制台本身的请求行为,和你后续上线的应用用户产生的读取量无关:
- 如果你停留在Firestore「数据」标签页,控制台会默认开启对当前浏览集合的实时监听,首次加载会拉取当前展示的所有文档,后续只要集合内有文档变更就会自动同步,每次同步的变更文档都会计数
- 「用量」标签页加载统计数据、控制台自动刷新等操作,也会产生额外的读取计数
- 测试阶段建议在非生产项目中操作控制台,避免占用生产项目的免费额度。
关于免费额度的说明
单日50000次的免费读取额度仅统计实际的服务端读取行为,只要不做全量拉取大集合、高频遍历全量数据之类的操作,普通中小规模应用完全可以覆盖日常需求,无需过度担心额度耗尽的问题。
内容的提问来源于stack exchange,提问作者Ruben Fernandes
相关产品推荐
相关产品推荐

