基本上,我有一个排行榜,显示前50名球员的得分。按照Firebase的最佳实践准则,我将数据展平,并将排行榜分数与玩家数据分开存储。但是,数据下载比我预期的要高(50个分数为3.62kb)。这是其中一个分数条目的示例。
"wgstgJIaVcbdOFvTLIk0VyhO77" : {
"display_name" : "FakeName7",
"high_score" : 4
},
我认为数据使用量来自用户ID(wgstgJIaVcbdOFvTLIk0VyhO77),实际上并不需要下载此数据,但我需要将其保存在此,因为我在安全规则中使用了它,只允许您更新分数。另外显示名称不是唯一的,所以我不能将其用作键。
我知道使用较短的键名(display_name-> n)也会有所帮助。
Path │ Total │ Count │ Average │
├──────────────┼─────────┼───────┼─────────┤
│ /leaderboard │ 3.62 kB │ 1 │ 3.62 kB
答案 0 :(得分:1)
Firebase的API响应为JSON格式(正如您最初的问题明确指出的那样),提供键和值是JSON规范的一部分。从理论上讲,有一种BJSON格式(二进制JSON),可以在传输和存储时节省大量空间,但是您无法控制Firebase API使用的格式。
最后但并非最不重要的一点是-即使连接速度较慢,也能获得50分的3.62kb的声音。问问自己,是否值得花太多时间进行微优化。
答案 1 :(得分:0)
没有API可以仅获取多个节点的值的列表,而无需获取相应的键。
您唯一可以考虑的是对子节点("wgstgJIaVcbdOFvTLIk0VyhO77
“)和属性名称("display_name"
,"high_score"
)使用较短的键。