首页 > 解决方案 > Firebase Firestore。快照上的“成本”

问题描述

我需要在页面上放置大约 20 个 Vue 组件。每个组件在安装时都会为自己创建一个onSnapshot,因此unsubscribe()在它被删除时也会创建一个。

const ref = firebase.firestore().collection('components').doc('comp1')

var unsubscribe = ref.onSnapshot(querySnapshot => {
  querySnapshot.forEach(doc => {
     ...
  })
}

onSnapshot每个/的成本是多少unsubscribe

  1. 在执行时间的意义上
  2. 在金钱意义上(根据 Firebase 的价格)

例如,如果 1000 个用户中的每个用户在半小时内更新一个包含 20 个组件的页面 100 次,我将支付多少费用?

onSnapshot也许在整个组件上制作会更好collection

标签: firebasevue.jsgoogle-cloud-firestore

解决方案


在Firestore 文档中找到您需要的信息

监听查询结果

Cloud Firestore 允许您收听查询结果并在查询结果更改时获取实时更新。

当您收听查询结果时,每次添加或更新结果集中的文档时,您都需要支付一次读取费用。当由于文档已更改而从结果集中删除文档时,您还需要支付读取费用。(相比之下,删除文档时,您无需支付阅读费用。)

此外,如果侦听器断开连接超过 30 分钟(例如,如果用户下线),您将被收取读取费用,就像您发出了全新的查询一样

因此,每次更新集合中的记录时,所有订阅用户都会执行读取。您应该花时间估计您将拥有的活跃用户数量以及数据的数量/频率,这将有助于采用适合您的应用的最便宜和最佳的解决方案。

我还添加了默认的Firebase 定价计算器,它位于页面底部,肯定会帮助您做出决定。


推荐阅读