我正在構建一個expressJS應用程序,該應用程序需要大約50MB(可能因壓縮方法而異)的JSON數據從服務器傳輸到客戶端最初加載。我很難找到一種方法來做到這一點,因爲內存使用率高,不會導致客戶端瀏覽器崩潰。我已經嘗試過使用socket.emit,它可能會導致內存使用率高達1500mb,這是不可接受的(甚至沒有完整的數據集)。我也試過將數據作爲handlebars render call(在app.get)上的參數傳遞,這似乎工作,直到我必須評估客戶端數據(我也不是粉絲)因爲它必須作爲字符串傳遞。此時,內存使用率再次是1500MB +,導致崩潰。當我在本地使用這些數據量時,我坐在舒適的500-600mb內存使用情況下。那麼,在不造成問題的情況下將這些數據傳輸到客戶端的最佳方式是什麼?ExpressJS JSON數據從服務器到客戶端的一次性傳輸
的數據看起來是這樣的:
var worldData = {
'x-164z144': {
'blocks': {
'y1': {
'color': 16711680,
'owner': 'bar456'
},
'y5': {
'color': 45654815,
'owner': 'foo123'
}
// possibly more data here in future
}
}
那麼,什麼是可以從服務器發送舒適的客戶一次數據量最大?我打算構建應用程序的方式實際上是需要所有數據的,但是如果不可行,我想我必須要解決它。 – dyarbrough
@dyarbrough性能問題不僅取決於數據的大小,還取決於數據的形狀,例如深層嵌套結構與平面結構,數字和字符串等類型等。一個長的字符串不需要太多的資源,一個非常深的嵌套對象。你真的需要在你的數據和用例中進行測試。我對數據或用例一無所知,因此無法再說更多。 – rsp
查看數據結構原文。這些數據非常簡單,但非常深入地嵌套。 XZ位置在最低級別,然後y位置(高度),這些位置給出了關於塊的一些信息。有什麼好的資源可以讓我更多地瞭解這個? – dyarbrough