构建一个expressJS应用程序,在最初加载应用程序时,需要大约50mb(可能因压缩方法而异)JSON数据从服务器传输到客户端。我很难找到一种方法来做到这一点,因为内存使用率很高而导致客户端浏览器崩溃。我尝试过使用socket.emit,这会导致chrome中的内存使用量达到1500mb,这是不可接受的(即使使用完整的数据集也不行)。我也尝试将数据作为把手渲染调用(在app.get上)的参数传递,这似乎有效,直到我必须在客户端评估数据(我也没有因为它必须作为一个字符串传递。此时,内存使用量再次为1500mb +,导致崩溃。当我在本地使用这些数据时,我坐在舒适的500-600mb内存中。那么,在不引起问题的情况下将这些数据传输到客户端的最佳方法是什么?
数据看起来像这样:
var worldData = {
'x-164z144': {
'blocks': {
'y1': {
'color': 16711680,
'owner': 'bar456'
},
'y5': {
'color': 45654815,
'owner': 'foo123'
}
// possibly more data here in future
}
}
答案 0 :(得分:0)
那么,在不引起问题的情况下将[50MB JSON]传输到客户端的最佳方法是什么?
最好的方法是不要这样做。当您尝试在一次传输中向客户端发送如此多的数据时,您将始终遇到问题,而您实际上从未需要这样做,因为客户端不太可能同时需要所有这些数据。你应该做的只是加载你需要的数据,何时需要更多,然后加载更多。
你没有解释它是什么类型的数据,以及你为什么要一次性发送它,但你甚至不太可能首先需要这样做。您只需要立即发送所需的大量数据,然后根据需要请求更多数据。
答案 1 :(得分:0)