4 votes

La requête Ajax prend trop de temps

Je vous le demande, car je n'ai pas d'idées...

J'ai fait une requête ajax qui reçoit une petite donnée du serveur. La réponse en json est déjà mise en cache par le serveur, donc c'est assez rapide.

Comme

window.xhr = $.ajax({
url: domain+'index.php?fx_action=ajax&fx_mode=continents&fx_type=countries&fx_ajaxid='+window.currentajaxrequest+'&fx_id='+window.id+'&fx_page='+(window.page-1)+'&fx_pager='+window.pager+'&fx_order='+window.order,
type: 'POST',
dataType: 'json',
timeout: 5000,
cache: false,
async: true,
beforeSend: function () {
        ...
    },
    error: function (xhr, ajaxOptions, thrownError) {
        return false;
    },
    success: function (data) {  
        ...

Mais le temps de réponse est très variable, parfois il faut 1 seconde, parfois seulement 67 millisecondes...

continents.js:65  http://teszt.domain.com/index.php?fx_action=ajax&fx_mode=continents&fx_type=countries&fx_ajaxid=0&fx_id=6&fx_page=1&fx_pager=9&fx_order=name
continents.js:100 start: 0
continents.js:101 beforesend: 9
continents.js:102 success: 5087
continents.js:103 complete: 5096
continents.js:65  http://teszt.domain.com/index.php?fx_action=ajax&fx_mode=continents&fx_type=countries&fx_ajaxid=1&fx_id=6&fx_page=2&fx_pager=9&fx_order=name
continents.js:100 start: 0
continents.js:101 beforesend: 9
continents.js:102 success: 70
continents.js:103 complete: 77
continents.js:65  http://teszt.domain.com/index.php?fx_action=ajax&fx_mode=continents&fx_type=countries&fx_ajaxid=2&fx_id=6&fx_page=3&fx_pager=9&fx_order=name
continents.js:100 start: 0
continents.js:101 beforesend: 11
continents.js:102 success: 301
continents.js:103 complete: 304

En obtenant la même structure de données avec presque la même taille en kbytes. Et tout est mis en cache par le serveur.

Du côté du serveur, le temps de fonctionnement de php est toujours de 30-40 ms. Quelle est mon erreur ?

1voto

Justin Beckwith Points 3569

Outre les pics de vitesse et de performance du réseau sur votre serveur, il est possible que vous vous heurtiez à la limite de 2 connexions actives au même nom d'hôte dans le navigateur. Quelques questions :

  • Avez-vous d'autres demandes qui pourraient être exécutées en même temps ?
  • Ce script s'exécute-t-il au démarrage de la page ? Si oui, il pourrait être en train de se battre avec d'autres demandes de ressources.

Je vous suggère de jeter un coup d'œil au panneau net dans firebug pour vérifier ce qui se passe pendant que votre demande est faite.

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