2009-10-27 7 views
1

J'ai un simple appel jQuery Ajax qui obtient des résultats HTML à partir d'un fichier PHP (qui exécute simplement une requête mysql et met en forme les résultats dans une liste). Le problème que je rencontre est que tout cet appel Ajax prend environ 12s à exécuter (le temps 'Waiting for Response' dans Firebug est 12.3s), mais quand je charge juste la page PHP avec les mêmes paramètres d'URL dans mon navigateur, la page entière est chargée en environ 300ms (et quand je lance la requête SQL que le fichier PHP appelle, elle prend moins de 1ms).Retard dans la réception des résultats Ajax en utilisant jQuery

D'autres notes qui peuvent aider:

  • La taille des données Ajax est 2kb, donc je ne pense pas que son dû à cela.
  • Les données sont beaucoup plus rapides à charger (environ 4,3 secondes) si le même appel ajax est effectué avec les mêmes paramètres après avoir été exécuté une fois auparavant (même si j'ai le cache-control pour la page: private, no-store, no-cache, doit-revalidate, rétrocontrôle = 0, pré-check = 0)

Voici le code source jQuery pour l'appel ajax:

$.ajax({ 
      url: "./lib/hippofunctions.php", 
      type: "GET", 
      dataType: "html", 
      data: 
       { 
        "ajax_action" : "get_hippos_for_tags", 
        "curTags" : currentCheckedTags, 
        "sortBy" : sortBy, 
        "params" : checkedFriendsStr, 
        "location" : location, 
        "start" : start 
       }, 
      error: function(request){my_alert("error on ajax_getHipposfortags ")}, 
      success:function(data){ 
       $("#HippoContainer_inner").html(data); 
     } 
     }) 
    } 

des pensées ou des suggestions pourquoi cela prend si longtemps pour recevoir les données Ajax et comment je peux accélérer cela?

+0

Avez-vous essayé connecter la conversation avec HttpFox ou similaire? Portez une attention particulière à l'endroit où le retard est. – cletus

+0

ouais ça me montre à peu près la même chose que Firebug. la seule requête faite est à la page PHP que la fonction ajax appelle. – Antony

Répondre

0

Je mettrai à jour ce avec d'autres suggestions, mais pour l'instant faire quelques tests de performance sur la fonction de la réussite:

success:function(data){ 
console.time("data render"); 
$("#HippoContainer_inner").html(data); 
console.timeEnd("data render"); 
} 
+0

merci pour la suggestion. le temporisateur de rendu de données est seulement 18ms pour la fonction de succès – Antony

Questions connexes