2012-01-20 53 views
28

Estoy creando un árbol con algún control personalizado preparado con JavaScript/jquery.Tamaño máximo de json para la respuesta al navegador

Para crear el árbol estamos suministrando objeto JSON como la entrada a java script para recorrer y crear el árbol.

Dado que el volumen de datos puede ir hasta -25K nodos. durante una prueba de carga básica identificamos que el navegador se bloqueará para dicho volumen.

La solución alternativa es sólo cargar primero el nivel de los nodos y la carga descanse sobre demanda a través de petición AJAX. el volumen del primer nivel puede variar hasta 500 - 1K nodos.

Cuál es el tamaño máximo que un json debería tener como respuesta del servidor. ¿Cuál podría ser el mejor enfoque para procesar dicho volumen de datos en el navegador?

+0

No hay límite de tamaño, me he ocupado de las solicitudes de Ajax que tardaron 5 segundos en completarse. – riship89

+1

@ hrishikeshp19 Y yo también, y solo había 500 bytes de datos ... ¿cuál es el límite de tamaño que tiene que ver con su cuantificación temporal? – Jeach

+0

Siempre pensé que había límites ... así que ejecuté un bucle Ajax muy simple en el que enviaría un script de PHP/Apache una solicitud de URL (lo envió de vuelta), incrementando la 'carga útil de datos' por un personaje en cada ciclo . Cuando el tamaño de mis datos alcanzó "8097 bytes", recibí un mensaje: "414 (Request-URI Too Large)" del servidor. Puede ver más detalles del error 414 en todo si lo busca en Google ... esta es la página Wiki: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes – Jeach

Respuesta

13

No hay límite de tamaño máximo de la respuesta HTTP (o el tamaño máximo de Int o el límite del navegador o el límite del servidor se han configurado).

El mejor enfoque es usar AJAX para cargar parte de los datos mientras se deben mostrar.

+8

Hay tamaños máximos en algunos navegadores, que depende de cómo se evaluará Json. El safari móvil no evaluará() un JSON, si es más grande que 10 MB –

+0

@ckuetbach Eso es correcto si el navegador tiene el límite. – xdazz

+1

También vale la pena señalar que [los servidores pueden tener tamaños máximos] también (http://forums.asp.net/t/1090853.aspx/1). – ruffin

7

Una respuesta HTTP no tiene límite de tamaño. JSON viene como una respuesta HTTP. Entonces tampoco tiene límite de tamaño.

Puede haber un problema si el objeto analizado desde la respuesta JSON consume demasiada memoria. Se bloqueará el navegador. Por lo tanto, es mejor que pruebe con diferentes tamaños de datos y verifique si su aplicación funciona correctamente.

Creo que lazy-loading es el mejor enfoque para una gran cantidad de datos. Especialmente cuando se trata de literales de objetos.

Ver High Performance Ajax Application presentación de Yahoo.

3

Bueno, creo que ya es demasiado tarde para dar mis dos centavos. Como complemento a shiplu.mokadd.im, la memoria del navegador de respuestas es una limitación y la respuesta HTTP puede tener cualquier cantidad de datos de acuerdo con la especificación TCP.

pero tengo una aplicación que utiliza Google Chrome (versión 29.0.xx) y el servidor embarcadero donde la respuesta desde el servidor embarcadero tiene una carga útil que asciende a 335 MB. Mientras el navegador recibe la respuesta de ese tamaño, Chrome deja de leer el mensaje "El mensaje IPC es demasiado grande". Aunque esto es específico de Google Chrome (no estoy seguro acerca de otros navegadores), debe haber un límite en el tamaño máximo de respuesta.

Cuestiones relacionadas