Tengo un sitio bastante ajax y algunas páginas con formato html de 3k se insertan en el DOM a partir de solicitudes ajax.ajax html vs respuestas xml/json - rendimiento u otras razones
Lo que he estado haciendo es tomar las respuestas html y simplemente insertar todo usando jQuery.
Mi otra opción es imprimir en xml (o posiblemente json) y luego analizar el documento e insertarlo en la página.
Me he dado cuenta de que parece que el sitio más grande hace las cosas de la manera json/xml. Google Mail devuelve xml en lugar de formato html.
¿Esto se debe al rendimiento? o hay otra razón para usar xml/json vs solo recuperar html?
Desde el punto de vista de javascript, parece que inyectar html directo es lo más simple. En jQuery Sólo que esta
jQuery.ajax({
type: "POST",
url: "getpage.php",
data: requestData,
success: function(response) {
jQuery('div#putItHear').html(response);
}
con una respuesta XML/JSON que tendría que hacer
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 />");
});
}
});
claramente no es tan eficiente desde el punto de vista de código, y no puedo esperar que es mejor rendimiento del navegador, entonces, ¿por qué hacer las cosas de la segunda manera?
esto realmente se pone en el centro del problema Garry. Aunque también lo abre a un mayor debate. con 2K entrando en la línea, me pregunto de dónde vendrá el golpe de rendimiento. ¿es por venir por la tubería?o es de insertar un chuck versos analizando a través de json/xml y luego insertando uno a uno – pedalpete
También es útil tener en cuenta que cuando jQuery recupera html de AJAX, si es una página HTML hay una gran cantidad de datos allí que jQuery no puede analizar. Dado que el método de jQuery para construir los nuevos nodos DOM es mantenerlos dentro de un div, los elementos como html, head, body, etc. son inválidos e ignorados. Esto puede significar que está enviando una gran cantidad de datos desperdiciados a través del cable. –