29 votes

ajax html vs réponses xml / json - performances ou autres raisons

J'ai une assez ajax site lourd et certains 3k au format html des pages sont insérées dans les DOM à partir de requêtes ajax.

Ce que j'ai à faire est de prendre le html réponses et juste en l'insérant le tout à l'aide de jQuery.

Mon autre option est de sortie au format xml (ou, éventuellement, json) et ensuite d'analyser le document et l'insérer dans la page.

J'ai remarqué qu'il semble que la plupart des plus grand site de faire les choses en json/xml. Google Mail renvoie xml plutôt que d'formaté en html.

Est-ce dû à la performance? ou est-il une autre raison d'utiliser xml/json vs juste récupérer le html?

À partir d'un javascript point de vue, il semblerait que l'injection directe html est plus simple. En jQuery je viens de le faire

jQuery.ajax({
    type: "POST",
    url: "getpage.php",
    data: requestData,
    success: function(response) {
        jQuery('div#putItHear').html(response);
    }

avec une réponse xml/json que j'aurais à faire

jQuery.ajax({
    type: "POST",
    url: "getpage.php",
    data: requestData,
    success: function(xml) {
        $("message",xml).each(function(id) { 
            message = $("message",xml).get(id); 
            $("#messagewindow").prepend("<b>" + $("author",message).text() + 
            "</b>: " + $("text",message).text() + 
            "<br />"); 
        });
    }
});

clairement pas aussi efficace à partir d'un code de point de vue, et je ne peux pas attendre qu'il vaut mieux les performances du navigateur, alors pourquoi faire les choses de la deuxième façon?

16voto

ylebre Points 2688

De retour JSON/XML donne le plus de liberté par rapport au retour HTML, et nécessite moins de connaissances spécifiques dans différents domaines (données vs balisage).

Puisque les données sont toujours données, vous laisser le choix de la façon de les afficher sur le côté client de choses. Cela permet à beaucoup de code destiné à être exécuté sur le côté client plutôt que sur le serveur - le serveur doit savoir que sur les structures de données et de rien à propos de balisage. Le programmeur doit savoir c'est comment faire pour fournir structures de données.

La mise en œuvre du client a seulement besoin de savoir sur la façon d'afficher les structures de données renvoyées par le serveur, et n'a pas besoin de s'inquiéter de la façon dont ces structures réellement obtenir de construire. Le programmeur doit savoir c'est comment faire pour afficher des structures de données.

Si un autre client est à faire (qui n'utilise pas le langage HTML comme langage de balisage), tous les composants du serveur peuvent être réutilisés. Il en va de même pour la construction d'un autre serveur de mise en œuvre.

6voto

Garry Shutler Points 20898

Cela réduira normalement la quantité de données transférées et améliorera donc la vitesse de transfert. Comme tout ce qui est sur le fil est normalement le goulot d'étranglement dans un processus réduisant le temps de transfert réduira le temps total nécessaire pour effectuer le processus, améliorant l'expérience utilisateur.

4voto

Darin Dimitrov Points 528142

Voici quelques avantages pour l'envoi de JSON / XML au lieu de HTML:

  1. Si les données doivent être utilisées en dehors de votre application, le HTML peut être plus difficile à analyser et à intégrer dans une autre structure
  2. JSON peut être directement intégré dans les balises script ce qui permet des scénarios AJAX interdomaines
  3. JSON / XML préserve la séparation des préoccupations entre les scripts côté serveur et les vues
  4. Réduit la bande passante

4voto

adardesign Points 6182

Veuillez lire cet article:
La réponse AJAX: XML, HTML ou JSON?
de quirksmode.org

Il répertorie tous les con et pro et toutes les options disponibles.

2voto

Massimo Fazzolari Points 3578

Vous devriez vérifier Pure , un outil de création de modèles pour générer du HTML à partir de données JSON.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X