Commentaires sur : JSON ? https://performance.survol.fr/2008/04/json/ Quelques mots pour des sites web rapides Thu, 19 Jan 2012 14:35:57 +0000 hourly 1 https://wordpress.org/?v=5.2.3 Par : Guibert https://performance.survol.fr/2008/04/json/#comment-85 Thu, 19 Jan 2012 14:35:57 +0000 http://performance.survol.fr/?p=23#comment-85 Sympa l’article, je serais moins « catégorique » car tout dépend du site et de son usage.

Si vous prenez en compte le trafic total d’un site, genre 1 millions de visite par jour, même 1%, même 3 octets peuvent au final économiser quelques téraoctet par jour.

Il n’y a pas de « plus ou mieux que ». C’est surtout une question de meilleurs choix en fonction de l’ensemble des contraintes techniques/financières/humaine.

Une des lacunes de json par rapport au XML, c’est l’absence de « schéma ». Mais est-ce qu’un schéma est bien nécessaire pour l’usage qui en est fait ?

Bref, le temps passe et SOAP disparaîtra 🙂

]]>
Par : Éric https://performance.survol.fr/2008/04/json/#comment-84 Fri, 10 Dec 2010 16:19:38 +0000 http://performance.survol.fr/?p=23#comment-84 Oui, il faudrait mettre à jour maintenant.

Par contre pour la taille tu ne peux pas faire attention à quelques octets qui sont finalement très léger en valeur absolue, et en même temps considérer comme négligeable l’import de la bibliothèque.

Même avec le cache, c’est dans les 40% des utilisateurs qui téléchargeront la lib une fois au cours de leur visite. Il va falloir faire beaucoup de json pour compenser.

Mais même si ça compense, entre télécharger un gros morceau, une fois, de manière bloquante, et télécharger plein de petites fois quelques octets de plus, au fil de l’eau, je te garantis que tu verras passer le premier cas mais que le second ne se verra pas du tout.

Pour qualifier de petit :
– Moins de 1.4Ko ça passe dans un seul segment TCP, c’est virtuellement identique que tu transfères 300 octets ou 1Ko. Pour voir une différence il faudrait que ces messages de 300 octets arrivent à saturer la bande passante disponible. Sur une connexion TCP saturer la bande passante avec des messages d’un seul segment est quasiment impossible, il faudrait que tu en envoies des milliers en simultané et en continu sur ton navigateur. Si ton navigateur envoit 5 requêtes ajax en simultané il y a déjà probablement un problème de conception ou d’agrégation donc on a de la marge.

– En dessous de 4Ko ça passe dans moins de trois segments TCP, donc ça passe en un seul round trip, sans attendre les ACK TCP. Là aussi, même chose, pour saturer il en faudrait quelques milliers à la fois.

Donc voilà, si ton message ne dépasse pas les 5 Ko (et je doute qu’il le fasse) tu ne verras pas la différence. Tant qu’il ne dépasse pas les 20 Ko et que tu as une faible latence, la différence sera négligeable vu qu’on parle de requêtes en fond, non bloquantes.

Et non, si tu considères que 40% c’est énorme sans regarder la valeur absolue c’est toi qui a un problème de raisonnement.

]]>
Par : Ninj https://performance.survol.fr/2008/04/json/#comment-83 Wed, 10 Nov 2010 01:55:11 +0000 http://performance.survol.fr/?p=23#comment-83 Ah tiens, cet article n’a plus de sens 🙂

Je provoque, il reste intéressant, mais les grands navigateurs intègrent maintenant un objet JSON nativement. Alors justement, il serait très intéressant d’étayer ce texte avec de nouveaux petits tests je trouve.

Par ailleurs, bien que globalement d’accord avec les conclusions de l’article, je trouve la démonstration incroyablement orientée, et très peu objective. Elle minimise puis occulte ouvertement chaque éléments contraires à la conclusion recherchée, les uns après les autres, pour finalement aboutir, par la force des choses, à la conclusion qu’aucun n’est viable.

Je noterai quand même, dans le désordre,
qu’une librairie externe JS est rarement re-téléchargée à chaque page ;
que 40% en taille, quoi qu’on en dise sur la valeur absolue, c’est énorme (pourquoi supposer qu’on ne transmet que de toutes petites données, et qu’est-ce qu’on appelle petites données ? Pour moi, 800 octets c’est gros quand c’est une différence que l’on trouve dans chaque objet passé !) ;
etc.

Dans « Ridicule », un professeur démontre au roi l’existence de Dieu. Il termine sa démonstration sous les applaudissement du roi par cette phrase, qui lui vaudra la mort : « j’aurais pu tout aussi bien démontrer le contraire si son Altesse me l’avait demandé »…

Enfin, bon travail de documentation cependant, merci 😉

]]>
Par : Éric https://performance.survol.fr/2008/04/json/#comment-82 Mon, 11 May 2009 07:37:36 +0000 http://performance.survol.fr/?p=23#comment-82 Tout à fait. Ce n’est pas une qualité intrinsèque de Json ou de Xml, mais plus l’environnement qu’il y a autour. Le jour où Json sera interprété nativement par 80% du marché des navigateurs (ça arrive, ça arrive) alors cet article n’aura plus de sens.

]]>
Par : stef13013 https://performance.survol.fr/2008/04/json/#comment-81 Sun, 10 May 2009 15:16:42 +0000 http://performance.survol.fr/?p=23#comment-81 Ok, vous avez raison… mais votre comparaison se base sur le fait que XML est géré nativement par le browser et pas JSON.
Cela revient un peu à comparer du P-CODE avec du code compilé 🙂
Bon j’exagère un peu mais quand même.

Wait and see…

]]>
Par : Éric https://performance.survol.fr/2008/04/json/#comment-80 Sun, 10 May 2009 13:08:19 +0000 http://performance.survol.fr/?p=23#comment-80 C’est dit dans le texte. La question n’est pas le pourcentage de différence mais la valeur absolue : combien d’octets sont effectivement téléchargés en plus.

Je pars sur une donnée de 2ko qui me parait représentative, mais on peut refaire le calcul avec d’autres chiffres la conclusion restera assez similaire. Sur un XML de 2ko, une fois passé par gzip, l’équivalent json+gzip la différence en valeur absolue est d’environ 160 octets. La différence de poids entre XML et JSON pour le type de données qu’on transfère habituellement est franchement négligeable devant le poids de la requête HTTP elle-même.

Bref, on gagne d’un côté 160 octets négligeables face à ce qui est transmis par ailleurs, mais on perd bien plus en devant ajouter une bibliothèque javascript de décodage ou simplement en utilisant eval().

Replacé dans son contexte, la différence de poids est peu significative.

]]>
Par : stef13013 https://performance.survol.fr/2008/04/json/#comment-79 Sun, 10 May 2009 12:33:10 +0000 http://performance.survol.fr/?p=23#comment-79 Article très intéressant…
Cependant, en passant, je ne comprends pas très bien une chose:
Vous dites ques le performances d’un site sont très importantes (tout à fait d’accord) mais cela ne semble pas vous emballer outre mesure que les datas de JSON soit 35/40% plus compactes.

Etonnant 🙂

Mais super article tout de même

]]>
Par : Louis https://performance.survol.fr/2008/04/json/#comment-78 Thu, 28 Aug 2008 19:45:30 +0000 http://performance.survol.fr/?p=23#comment-78 @Rik: bien dit concernant la sécurité. Si l’on encrypte ses tables utilisateurs dans sa base de données, c’est pour la même raison : si jamais quelqu’un y a accès — quand bien même on a tout fait pour éviter ce scénario— cette mesure permet de limiter les dégats.

Il toujours bon dans le cadre de scripts web de prévoir des sas de sécurité afin de limiter la casse en cas de coups durs.

]]>
Par : Michaël Guitton https://performance.survol.fr/2008/04/json/#comment-77 Mon, 28 Apr 2008 18:29:24 +0000 http://performance.survol.fr/?p=23#comment-77 A tester et creuser ?

Je ne suis pas formel mais il est fort possible qu’attacher dynamiquement un élément soit plus performant qu’un eval() sous IE.

Pour information, cette technique a été popularisée par Yahoo 😉

http://joseph.randomnetworks.com/archives/2007/01/08/json-does-not-require-eval/
http://developer.yahoo.com/common/json.html

]]>
Par : Éric https://performance.survol.fr/2008/04/json/#comment-76 Mon, 28 Apr 2008 12:56:33 +0000 http://performance.survol.fr/?p=23#comment-76 Je n’ai pas testé, mais je serai étonné que passer par un <script> soit plus performant qu’un eval(). En interne ça doit être assez similaire à traiter.

]]>
Par : Michaël Guitton https://performance.survol.fr/2008/04/json/#comment-75 Mon, 28 Apr 2008 12:39:47 +0000 http://performance.survol.fr/?p=23#comment-75 Christian Heilmann démontre comment utiliser des données au format JSON de façon native et efficace :

http://www.wait-till-i.com/2008/04/11/example-of-an-unobtrusive-lazy-loading-badge-using-the-twitter-api/

Je trouve son exemple plutôt intéressant, non ?

]]>
Par : Rik https://performance.survol.fr/2008/04/json/#comment-74 Sun, 27 Apr 2008 17:57:04 +0000 http://performance.survol.fr/?p=23#comment-74 On dérive un peu du sujet initial, mais considérer ses données comme non sûres permet d’éviter, en cas de laxisme à un endroit de ton appli, de contaminer toute l’appli.

]]>
Par : David, biologeek https://performance.survol.fr/2008/04/json/#comment-73 Sun, 27 Apr 2008 16:28:11 +0000 http://performance.survol.fr/?p=23#comment-73 Dans ce cas tu as un problème en amont, tu ne devrais pas avoir des données corrompues dans ta base.

]]>
Par : rik https://performance.survol.fr/2008/04/json/#comment-72 Sun, 27 Apr 2008 05:04:32 +0000 http://performance.survol.fr/?p=23#comment-72 Non non, même si tu es la source. Les données sources ont pu être corrompues.

]]>
Par : David, biologeek https://performance.survol.fr/2008/04/json/#comment-71 Sun, 27 Apr 2008 02:29:45 +0000 http://performance.survol.fr/?p=23#comment-71 @rik : sauf si la source c’est toi.

]]>
Par : Neovov https://performance.survol.fr/2008/04/json/#comment-70 Sat, 26 Apr 2008 12:36:49 +0000 http://performance.survol.fr/?p=23#comment-70 Merci pour ta réponse Éric !

]]>
Par : rik https://performance.survol.fr/2008/04/json/#comment-69 Sat, 26 Apr 2008 11:53:43 +0000 http://performance.survol.fr/?p=23#comment-69 J’aimerais ajouter qu’il ne faut jamais croire sa source.

]]>
Par : Sunny https://performance.survol.fr/2008/04/json/#comment-68 Sat, 26 Apr 2008 07:41:22 +0000 http://performance.survol.fr/?p=23#comment-68 J’aimerais ajouter dans le sens de JSON que si l’on fait totalement confiance à sa source, aucun besoin de librairie externe, juste d’un eval(). Ceci permet de traiter des données aussi simplement que eval(mon_json).livres[3].auteurs[0].adresse.ville.

]]>
Par : Éric https://performance.survol.fr/2008/04/json/#comment-67 Fri, 25 Apr 2008 19:50:09 +0000 http://performance.survol.fr/?p=23#comment-67 Ils s’y attachent. Voir http://starkravingfinkle.org/blog/2008/02/extension-developers-native-json-parsing/ et http://developer.mozilla.org/en/docs/nsIJSON

Mais pour Firefox il faut encore les privilèges chrome, ce qui empêche toute utilisation sur un site web classique. Ca ne changera pas pour Firefox 3. D’ici à Firefox 4, d’ici à ce que les autres navigateurs et particulièrement MSIE proposent quelque chose d’équivalent … il y aura de l’eau sous les ponts.

Entre temps E4X arrive, et XML pourrait regagner le coeur des développeurs.

]]>
Par : Neovov https://performance.survol.fr/2008/04/json/#comment-66 Fri, 25 Apr 2008 19:13:52 +0000 http://performance.survol.fr/?p=23#comment-66 « XML se payerait même le luxe d’être au moins légèrement plus performant, à cause de sa gestion native dans les navigateurs »

J’aurai plutôt dit « grâce à sa gestion native » 😛

Et justement, ça doit être pour ça que JSON est moins performant que XML, puisqu’il reste artisanal (un gros eval c’est un peu crados), peut-être que si les navigateurs proposaient des méthodes pour exploiter du JSON les résultats seraient différents.

(mais je doute que les développeurs de navigateurs veuillent se pencher là dessus…)

Merci pour cet article, je bois tes conseils 😉 !

]]>