【发布时间】:2019-01-04 23:36:45
【问题描述】:
我正在分析我的 firebase 数据库中的“下载泄漏”(我正在使用 JavaScript SDK/firebase 函数 Node.js),最后缩小到“更新”功能,这出人意料地导致了数据下载(这会影响我的计费)案例非常重要 - 约 50% 的账单来自此泄漏):
Firebase 函数 index.js:
exports.myTrigger = functions.database.ref("some/data/path").onWrite((data, context) => {
var dbRootRef = data.after.ref.root;
return dbRootRef.child("/user/gCapeUausrUSDRqZH8tPzcrqnF42/wr").update({field1:"val1", field2:"val2"})
}
此函数在“/user/gCapeUausrUSDRqZH8tPzcrqnF42/wr”节点生成下载
如果我将路径更改为以下内容:
exports.myTrigger = functions.database.ref("some/data/path").onWrite((data, context) => {
var dbRootRef = data.after.ref.root;
return dbRootRef.child("/user/gCapeUausrUSDRqZH8tPzcrqnF42").update({"wr/field1":"val1", "wr/field2":"val2"})
}
它在“/user/gCapeUausrUSDRqZH8tPzcrqnF42”节点生成下载。
这是firebase database:profile的结果
我只需要上传数据,如何在更新数据时摆脱下载或减少使用?
【问题讨论】:
-
您究竟是如何得出更新功能导致“下载”带宽的结论的?我很震惊您显示的任何代码都会导致实时数据库的输出。
-
@DougStevenson - 更新问题 - 请看一下
-
可能是SSL encryption overhead:安全连接所需的 SSL 加密开销会产生相关成本。平均而言,初始握手的成本约为 3.5KB
-
感谢@BobSnyder - 问题是这种开销在 5 分钟内触发了 1000 次,与实际有效负载相比,产生了相当多的数据。
标签: javascript firebase firebase-realtime-database google-cloud-functions