web-dev-qa-db-fra.com

Taille json maximale pour la réponse au navigateur

Je crée un arbre avec un contrôle personnalisé préparé avec JavaScript/jquery.

Pour créer l'arborescence, nous fournissons l'objet json en tant qu'entrée du script Java pour parcourir et créer l'arborescence.

Étant donné que le volume de données peut aller jusqu'à 25 000 nœuds. lors d'un test de charge de base, nous avons identifié que le navigateur serait bloqué pour un tel volume.

La solution alternative consiste simplement à charger le premier niveau des nœuds et à reposer la charge à la demande via AJAX. Le volume du premier niveau peut varier jusqu'à 500 - 1K nœuds.

Quelle est la taille maximale qu'un json doit avoir comme réponse du serveur. Quelle pourrait être la meilleure approche pour traiter un tel volume de données sur un navigateur.

34
ankur

Il n'y a pas de limite de taille maximale de la réponse http (ou la taille maximale d'Int ou la limite du navigateur ou la limite du serveur ont été configurées).

La meilleure approche consiste à utiliser AJAX pour charger une partie des données pendant qu'elles doivent être affichées.

14
xdazz

Une réponse HTTP n'a pas de limite de taille. JSON arrive comme réponse HTTP. Il n'a donc pas de limite de taille non plus.

Il peut y avoir un problème si l'objet analysé à partir de la réponse JSON consomme trop de mémoire. Cela fera planter le navigateur. Il est donc préférable de tester avec différentes tailles de données et de vérifier si votre application fonctionne correctement.

Je pense que le chargement paresseux est la meilleure approche pour de si grandes quantités de données. Surtout lorsqu'il s'agit de littéraux d'objets.

Voir Application Ajax haute performance présentation de Yahoo.

8
Shiplu Mokaddim

Eh bien, je pense que je suis trop tard pour donner mes deux cents. Compléter shiplu.mokadd.im la mémoire du navigateur de réponse est une limitation et la réponse HTTP peut avoir n'importe quelle quantité de données selon la spécification TCP.

Mais j'ai une application qui utilise Google Chrome (version 29.0.xx) et le serveur Jetty où la réponse du serveur Jetty a une charge utile s'élevant à 335 Mo. Pendant que le navigateur reçoit la réponse de cette pure size Chrome arrête de laisser le message "Le message IPC est trop gros". Bien que cela soit spécifique à Google Chrome (pas sûr des autres navigateurs), il devrait y avoir un seuil sur la taille maximale de la réponse.

3
Bunti