我了解到,Firestore文档在更新后会全部发送给客户端侦听器,而不仅仅是diff。我也可以想象它不是发送原始的JSON,而是通过有线将其转换为protobuf,这样效率更高。我想问题是,效率要高多少?
我有一个至少每秒更新一次的3K JSON文件,它可能更频繁,我需要发送给移动客户端以进行持续7小时以上的现场活动,为此我正在使用Firestore和客户听众。如果不考虑传输开销,JSON可以达到〜11MB / hr。我宁愿不消耗我的移动客户端的大量数据。这样,由于JSON文件的大部分是事件中的参与者数组,因此我将JSON分开并将它们存储为多个Firestore文档,因此仅将更新的文件发送到侦听器,从而大大减少了通信量。但是,这增加了客户端和服务器的复杂性,并可能导致更新处理顺序错误。
我假设协议缓冲区的效率提升不够,但是我没有简便的方法来确认这一点。互联网似乎认为等效的protobuf平均比JSON小约34%,这是一个合理的估计吗?
是的,我知道重复地处理更新后的状态JSON文档本身并不高效,但是我正在与供应商现在愿意提供的东西一起工作。