firebase on()/addValueEventListener 需要多少资源?

Posted

技术标签:

【中文标题】firebase on()/addValueEventListener 需要多少资源?【英文标题】:how much resources does firebase on()/addValueEventListener takes? 【发布时间】:2019-02-22 17:22:32 【问题描述】:

我看到 Firebase 网站有很多文档可以帮助我们优化资源的使用,但是我没有找到使用资源的详细示例。 这对我了解如何构建我的应用程序以及更好地选择性能和成本方面的策略很有用。

以安卓为例

我明白当我这样做时:

query.addListenerForSingleValueEvent(...);

对数据库的所有引用都是“查询”的,因此这是一个单一的查询,但会删除所有对象。

如果我这样做:

query.addValueEventListener(...);

连接保持打开状态,但它会继续按时间间隔建立连接吗? 或者在计费方面可能被视为单一连接? 并且在对数据库进行更改之后,它会再次查询所有对象吗?

一般而言,发出单个请求与使用实时数据库功能收听参考相比要重多少和成本多少?

也许文档中有一个部分对此进行了解释,但我没有找到。

【问题讨论】:

【参考方案1】:
query.addListenerForSingleValueEvent(...);

所有查询的引用”到数据库,所以这是一个单一的 查询但删除所有对象。

它会侦听一次您正在查询的子对象内部的对象,而不是数据库中的所有对象。

query.addValueEventListener(...);

连接保持打开,但它会继续建立连接吗 时间间隔?

它没有间隔,而是在您的数据库发生更改时进行侦听,假设您更改了数据库中的某个值,这将触发您的addValueEventListener。这只会在您的数据库中更改某些值时消耗资源,因此使用情况将与您的数据库使用情况有所不同,相反,addListenerForSingleValue 将只触发一次以查询您的数据,我们可以确保它消耗的网络资源少于一个监听器,总是监听一些更改以引入您的应用程序

查看这个有用的链接:https://www.firebase.com/docs/java-api/javadoc/com/firebase/client/ValueEventListener.html

【讨论】:

感谢 Gaston,所以这意味着“addListenerForSingleValue”下载孩子一次,并且“addValueEventListener”的数据使用发生在第一次调用和当孩子在数据库上更改时。就资源而言,(第一种情况)

以上是关于firebase on()/addValueEventListener 需要多少资源?的主要内容,如果未能解决你的问题,请参考以下文章

[Firebase + PWA] Keynote: Progressive Web Apps on Firebase

禁用 on('value') 缓存 firebase 实时数据库 JS SDK [关闭]

async/await 与 firebase .on() 数据库监听器

firebase on()/addValueEventListener 需要多少资源?

Firebase 存储 TypeScript 错误:“Promise<UploadResult>”类型上不存在属性“on”

*ngFor in *ngFor on firebase 数据库