javascript – 计算firebase消息大小

前端之家收集整理的这篇文章主要介绍了javascript – 计算firebase消息大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试计算firebase中消息的大小,以便准确估算我的应用程序的成本.

我注意到,在运行时,实时数据库计算器显示的数据大小超出预期.为了验证这一点,我启动了一个玩具应用程序,它有一个名为“test”的引用,其中包含以下数据:

{"foo": "bar"}

继续其他答案,我估计这个数据不到20个字节.

使用以下代码检索数据:

firebase.database().ref("test").once("value",function(snapshot) {
  console.log(snapshot.val());
});

这是一个jsfiddle showing this toy example.

我抓住了ref和console.log数据.我已经10次访问了这个例子.当我查看玩具应用程序的实时数据库使用选项卡时,它会显示使用的30KB带宽.

还发送了哪些其他数据来解释预期数据使用量(10 * 20字节= 200字节)与发送的实际30KB之间的这一巨大差距?

初始化增加数据使用量的应用程序时是否有一些初始开销?

编辑:

按照cartant的建议,我记录了从websocket发送的帧.这是我发现的(在此之前我看到一些约200字节的初始化消息):

     Data                                                        Length    
     {"t":"d","d":{"r":22,"a":"q","b":{"p":"/test","h":""}}}     55 
     {"t":"d","d":{"b":{"p":"test","d":{"foo":"bar"}},"a":"d"}}  58 
     {"t":"d","d":{"r":23,"a":"n","b":{"p":"/test"}}}            48 
     {"t":"d","b":{"s":"ok","d":{}}}}                44 
     {"t":"d","d":""}}}                44

所以似乎任何消息都有~200-250字节的开销.谁能证实这一点?这仍然没有完全解释我之前提到的差距(10条消息* 250字节= 2.5 KB与记录的30 KB相比).

更新:

当前带宽使用率高达155 KB.我不确定这篇文章中有35位观众可以获得这个数字.为了试图理解这一点(我仍然不确定带宽是如何实际计算的),这是我的想法:

200 bytes to initialize/connect
220 bytes per message (200 bytes of overhead + 20 bytes in message)
100 times sent (this is probably an overestimate,as there are 35 views on this post,but I have viewed it around 10 times myself)

(200 bytes + 220 bytes) * 100 views = 42000 bytes or 42 KB. 

所以要达到155 KB要么发送超过100次,要么有一些无法解释的开销.另外,我假设(我不知道)初始化的开销是200字节,发送任何消息的开销是200字节.

最佳答案
我已经运行了一些测试(读取22个字节)并认为计算带宽可能存在错误.如果没有,则重载的带宽速率非常大.这是我的测试:

Test 1 (600 requests of 22 bytes with only one initial connect to the page)

83 KB total for 600 requests
83 KB = 83,000 bytes / 600 requests = 138.33 bytes per request
data sent = 22 bytes
138.33 bytes - 22 bytes = 116.33 bytes overhead per message sent

这是合理且非常好的(虽然这似乎没有考虑到firbase的定价页面).

我等了一个半小时后运行了第二次测试,以便实时数据库使用情况可以更新.

测试2包含我认为可能是错误内容

Test 2 (20 page reloads sending one request) 

96 KB total for 20 page reloads + 20 requests
96 KB / 20 = 4.8 KB per reload

我认为这不正确,这让我相信实时数据库的数据使用部分存在错误.我注意到在刷新时使用的数据会增加大约2-4kb(我只存储了22个字节).

我很确定这个用例很容易重现.我不会赞成这个,因为它不是一个真正的答案,只是提出了更多的问题,但这是我在运行这些测试用例时发现的.

谢谢

猜你在找的JavaScript相关文章