2012-06-23 39 views
12

Estoy desarrollando mi sitio por Java. Estoy usando jQuery, Ajax, así:jquery ajax respuesta lenta en Google Chrome

$.ajax({ 
    dataType: "json", 
    url : 'getWords.htm', 
    type: 'post', 
    async : false, 
    data : {dataJSON : JSON.stringify(dataJSON)}, 
    success : function(words) { 
     ..... 
    } 
}); 

Se está trabajando bien, pero en Chrome funciona lentamente que Firefox, IE y Opera. En Chrome tengo un poco de retraso (alrededor de 0,8 segundos). Cuando tengo cuatro consultas ajax por cada clic, es realmente lento. ¿Cómo puedo arreglarlo?

En firebug veo: enviando 5ms, esperando 512ms, recibiendo 3ms, pero en otros navegadores todo el rápido.

Gracias.

+1

Cuando dices que funciona más lento en Chrome, ¿cuánto más lento? 1 ms? 10 ms? 100 ms? – Aidanc

+2

Parece que su problema está en el servidor, no en el cliente. – gdoron

+0

¡Whoa 8sec es bastante lento! –

Respuesta

3

Si no está cargando el contenido del .post() en un elemento generado dinámico intente ponerlo dentro de window.onload en lugar de $(document).ready, eso me ha funcionado. ¡Espero eso ayude!

actualización

Siendo el post() disparado con un evento click(), el elemento padre tiene que estar preparado. Pero puede ganar algo de tiempo si llama a la función post() fuera de su $(document).ready y guarda los resultados en una variable javascript. Eso actuará como un tipo de initialValue que deberá actualizar desde la segunda vez que el usuario haga clic en su elemento.

+0

Mi evento invocado cuando presiono el botón, ¿cómo uso window.onload? Lo siento, soy nuevo en JavaScript, no entiendo tu respuesta. – sochi

1

Use async: 'true'.

Este es el valor predeterminado y no debe cambiar a solicitudes síncronas a menos que tenga una muy buena razón para hacerlo. Primero, permitirá que el navegador descargue archivos en paralelo y las segundas solicitudes sincrónicas podrían bloquear el hilo del navegador.

Por cierto: "A partir de jQuery 1.8, el uso de async: false está en desuso". (de jQuery.ajax docu)

+1

"Necesito 'asincrónico: falso' en mi caso, pero si especifico 'async: true', también tengo retraso. – sochi

+1

No estoy seguro de si actualizó los documentos entre esta respuesta y ahora, pero esa desaprobación no es verdadera. Solo está en desuso si usa el objeto $. Diferido devuelto por la llamada $ .ajax, ya que no funcionará en ese caso: "A partir de jQuery 1.8, el uso de async: falso con jqXHR ($ .Deferred) está en desuso; " – Chris

-1

a veces es mejor usar jquery en la máquina y no la almacenada en google. depende de la conexión a Internet que

local

<script type="text/javascript" src="/js/jQuery.min.js"></script> 

Api de Google

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> 
+2

El problema OP es con una llamada ajax, no la carga de jquery. –

1

Algo similar le pasó a mí hace un tiempo, y el tiempo de respuesta fue diferente para cada navegador al llamar un AJAX, POST o GET. Resultó ser una gran cantidad de datos que estaba pasando de la url, "getWords.htm" en su caso. Un par de preguntas que podrían ayudar a determinar qué es lo que está mal en su caso:

  1. ¿Cuántos datos está enviando de vuelta y cuál es el formato? Pruebe JSON y descomprímalo en la función "SUCCESS" para generar el código/página HTML .
  2. ¿Cuántos objetos DOM intenta generar en una toma ? Ayuda mucho analizar todo lo que necesite sobre la marcha, lo cual es fácil de hacer una vez que tenga el JSON en el lado del cliente y genere el código HTML desde allí dinámicamente.