You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore调用onSnapshot实时获取数据的计费规则是什么?

Cloud Firestore onSnapshot() 方法收费说明

直接给结论:使用onSnapshot()做实时监听时,不会在普通文档读取费用之外产生专属的额外收费项,常规场景下的连接维持、数据传输都不会单独计费。
具体计费规则拆解:

  • 首次发起监听时,Firestore会拉取所有符合监听条件的存量文档,这部分和你用普通get()拉数据的计费规则完全一致,按实际读取的文档数量计算读取费用。
  • 监听建立后的存续期间,没有数据变更时不会产生任何费用,维持长连接本身不收费。只有当监听范围内的文档发生增/删/改、符合你设置的筛选条件时,才会按推送的变更文档数量计算新的读取次数。
  • 常规场景下,实时监听推送数据产生的公网下行流量不单独收费,不需要为数据包传输额外交流量费。

只有两种特殊场景可能产生预期之外的费用,都和onSnapshot()方法本身无关:

  • 如果你设置的监听范围过大(比如无过滤条件监听包含数十万文档的全集),首次拉取存量数据、后续高频变更都会产生大量读取计数,这部分属于正常的文档读取计费,不是监听的额外收费,优化监听筛选条件就能控制成本。
  • 如果你使用的是多区域部署的Firestore实例,跨GCP大区的公网出口流量达到单月百GB以上量级时,会产生GCP统一的跨区流量费用,这部分费用不管你是用onSnapshot()实时拉取,还是用get()手动轮询拉取都会产生,和实时监听功能没有绑定关系。

基础单文档监听示例

import { doc, onSnapshot } from "firebase/firestore";

const unsub = onSnapshot(doc(db, "cities", "SF"), (doc) => {
    console.log("Current data: ", doc.data());
});

以上方代码为例:首次绑定监听时收取1次cities/SF文档的读取费用,后续只有当这个文档内容被修改时,才会产生新的1次读取费用,没有其他附加收费项。如果不需要继续监听,记得调用返回的unsub()方法解绑即可,解绑后不会再产生任何相关费用。


内容的提问来源于stack exchange,提问作者Richardson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:30:46