2016-06-18 12 views
0

GET Anruf/giveMyTree gibt ein Json, mehr als 2 GB in der Größe. In der Frontendseite analysieren wir dieses json und die Verarbeitung auf ganzem json und die Anzeige der Daten json enthält .wie man json im Frontend rendert, dessen Größe wenn mehr als 2gb

Json-Struktur ist in verschachtelter Struktur.

{

tree [1]

| _ O {0}

|_ branch[50] 
    |__ 
    | Point[1000] 
    |  |___ branch {225} 
    |    : 
    |    : 
    |___ Line[10000] 
    :  |____start{1} 
    :  |   | 
    :  |   __ branch{122} 
    .  |     : 
    .  |     : 
      |____end{1} 
         | ..... 

    .       : 
    .       : 

}

zeigen wir 1000 Knoten, 10000 Link und andere Daten nach der ganzen json Parsen.

Ich kann diese Daten nicht im Browser anzeigen, der Browser stürzt ab oder hängt während der Verarbeitung dieser Daten. Gibt es eine Möglichkeit, diese Daten in den Browser zu laden und das Diagramm dem Endbenutzer anzuzeigen.

+1

Diese sehr große Menge an Daten auf der Client-Seite ist sehr schlecht. Eine Art Paginierung oder die Fähigkeit, mehr Daten auf Benutzeranforderung abzurufen, sollte auf der Seite enthalten sein. Überprüfen Sie eine [ähnliche SO-Post] (http://stackoverflow.com/questions/19596403/best-way-to-handle-graphing-and-display-of-large-data-sets). – Abhishek

Antwort

0

Mit der API, die Sie entworfen haben, gibt es keine. Der Browser muss den JSON laden, um ihn zu analysieren, und 2 GB JSON werden mehr als 2 GB JS-Objekte im Speicher erstellen, geben oder übernehmen.

Selbst ein 4K-Display kann maximal 32 MB Daten gleichzeitig anzeigen (4K * 2K * 4 = 32M), und wenn Sie hauptsächlich Text haben, viel weniger, brauchen Sie also nicht 1 GB von Daten in einer einzigen Übertragung.

Aktuelle Browser haben Probleme beim Analysieren von einigen hundert Megabytes JSON. Sie müssen also Ihre API so ändern, dass immer kleinere Blöcke gleichzeitig übertragen werden. Sie sollten jede JSON-Antwort auf weniger als 20 MB reduzieren Größe, entweder durch Entfernen von Details aus dem allgemeinen Baum (und Holen von ihnen, wenn der Benutzer einen einzelnen Eintrag öffnet) oder durch Aufbrechen des gesamten Baums in kleinere Stücke (Laden Sie nur den Wurzelknoten und alle Unterknoten, und wenn ein Unterknoten expandiert ist, holen Sie die Unter-Unterknoten).

+0

Danke Alexander. Ansatz, den Sie vorschlagen "Laden Sie nur den Wurzelknoten und alle Unterknoten, und wenn ein Unterknoten erweitert ist, holen Sie die Unter-Unterknoten" – omee

+0

Können wir diesen Ansatz in Front-Seite implementieren. So wie wir den gesamten JSON im Browser laden und im JSON-Objekt speichern [hier gehe ich davon aus, dass der Browser den Host-Maschinen-RAM verwendet, so hängt die JSON-Objektspeicherkapazität vom Arbeitsspeicher des Hostrechners ab], wenn der Benutzer nur diesen Knoten parst und in der UI anzeigt. – omee

+0

Sie können versuchen, aber ich erwarte auf 90% der Maschinen wird der Browser abstürzen. – Alexander