Qual è il maggior numero di JSON che puoi ragionevolmente aspettarti di decodificare sul lato client

StackOverflow https://stackoverflow.com/questions/1819220

  •  10-07-2019
  •  | 
  •  

Domanda

Questa mattina ho provato a utilizzare le funzionalità di decodifica JSON di ExtJS contro 0,75 MB di dati e si è verificato un arresto anomalo di FF3. Mi chiedo qual è il più JSON che ci si possa ragionevolmente aspettare di decodificare sul lato client? Questo potrebbe essere l'utilizzo di ExtJS, jQuery, altri framework Javascript o qualsiasi decodifica integrata che Javascript stesso può offrire.

È stato utile?

Soluzione 3

A quanto pare Firebug era il colpevole. Con questa opzione disattivata, sia la funzione ext.util.JSON.decode che la funzione eval () nativa di Javascript stanno tornando in 0,15 secondi.

Con Firebug attivo, anche se eval ritorna in 0.3, mentre finalmente ho ottenuto Ext.util.JSON.decode per finire con Firebug e ci sono voluti più di 60 secondi !! Ho sicuramente bisogno di Firebug acceso durante lo sviluppo.

Altri suggerimenti

Ho riscontrato questo problema con il parser JSON di YUI, quindi ho provato il parser JSON di Prototype per set di dati di grandi dimensioni e ho scoperto che funzionava molto meglio. Ho anche scoperto che una volta che i set di dati hanno raggiunto una certa dimensione, hanno impiegato troppo tempo per analizzare e il browser avrebbe inviato un messaggio che chiedeva se si desidera terminare il lavoro. Quindi, per set di dati di grandi dimensioni, potrebbe essere utile suddividerli in blocchi più piccoli che sono più facili da digerire.

Ciò dipende in gran parte dal browser del client, poiché Chrome non avrebbe problemi con qualcosa di così grande, mentre IE6 molto probabilmente si fermerebbe sul posto.

Raccomanderei che invece di una grande trasmissione JSON da 750 KB che dovresti decodificare contemporaneamente, prova a inviare messaggi più piccoli (100 KB) sullo sfondo e richiedendo / mostrando la parte dei dati che il client prima ha bisogno. In questo modo la tua pagina sembrerà più veloce. Cerca sempre di caricare su richiesta set di dati di grandi dimensioni.

La mia impressione è che il problema non riguardasse comunque le dimensioni del messaggio JSON, ma piuttosto l'implementazione JSON di ExtJS in FF.

Hai provato questo in altri browser? Se ciò accade solo su FF, ti consiglio di provare a utilizzare l'interfaccia JSON di Firefox per fare la decodifica e vedere se funziona.

Inoltre, hai verificato che la risposta JSON sia effettivamente corretta? Potrebbe causare l'arresto anomalo del parser JSON.

Questo è interessante poiché Ext utilizza semplicemente l'analisi JSON del browser nativo se supportata dal browser, altrimenti eval il JSON. Non esiste alcun analisi manuale di alcun tipo, quindi non sei sicuro di come potrebbe essere interessato Firebug. Una cosa che potresti provare, controlla il valore di Ext.USE_NATIVE_JSON appena prima della tua logica di analisi (dovrebbe essere true se stai usando FF 3.1+, altrimenti sarà false ). Prova a impostarlo sul valore opposto e vedi se cambia qualcosa (di nuovo, non so perché, ma vale la pena provare a vedere se c'è qualche differenza nel tuo caso).

A proposito, è un sacco di JSON ...;)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top