Requête Ajax OK -> réponse lente

Par FactureHero.com, il y a 10 ans


Hello, j'explique le problème,
Je met une petite couche d'ajax dans le back d'une application web.
Les requêtes Ajax en GET passent plutôt lentement (~5 secondes)

En effectuant la requête de nouveau et en monitorant sur la console Chrome, voilà les résultats que j'obtiens.


Comment interpréter le fait que le "content download" soit si lent et quel remède peut-on imaginer ?

Je précise 1 chose importante :

Merci de vos retours si certains d'entre vous ont déjà eu des problèmes de lenteur avec Ajax.

8 réponses

FactureHero.com, il y a 10 ans

Je précise 2 nouveaux points que je viens d'observer :
1/ En regardant sur chrome et Firefox la "réponse" de la requête arrive en moins d'une seconde après le clic, c'est bien l' "affichage" qui met plus de temps
2 / En passant sur Chrome sur mon téléphone Android, la réponse ajax et l'affichage prennent moins d'1 seconde.

donc question, est-ce qu'il se peut que ce soit du à une lenteur d'interprétation javascript et jquery des navigateurs web (en l'occurence ici encore plus firefox et IE que Chrome) ?

Huggy, il y a 10 ans

Si tu dis que c'est l'affichage, qu'est ce que ça donne sans affichage ? et c'est quoi ? un innerHTML ?
Ta requete ajax est-elle synchrone ou asynchrone ?

FactureHero.com, il y a 10 ans

Pour te répondre Huggy :

  • Mode classique : Asynchrone
  • J'appelle en AJAX une fonction PHP qui ne fait que retourner de données en Json (ces données sont visiblement retournées en moins d'une seconde)
  • Puis via Jquery, j'affiche ces données avec un $('.madiv').append('') - (ici je met un peu de HTML et les données que je veux afficher)

Tout simplement :)

FactureHero.com, il y a 10 ans

Pour être précis par rapport à mon précédent commentaire @Huggy, voici le code d'affichage en cas de succès de ma requête AJAX :
Je fais une petite boucle avec each et j'affiche avec append()

$.ajax({ url: $(this).data('href'), type: "GET", cache: false, dataType: 'json', success: function(data) { $('#myModalAddvideo').find('.bigloader').fadeOut(); $('#myModalAddvideo').find('#myTable').show('fade'); $.each(data, function(key, value) { var tr = "<tr data-id='19' class='list'><td class='center category'><a title=''><img width='20' alt='' src='/img/apps/"+value['Post'].category_id+".png'></a></td><td class='name'>"+value['Post'].name+"</td></tr>"; $('#myModalAddvideo').find('tbody.list').append(tr); // console.log(value['Post'].name); }); } });
tleb, il y a 10 ans

Tu es en local ? Tu utilises une machine virtuel ? Tu as uploadé le site pour le visualiser sous Android non ?

FactureHero.com, il y a 10 ans

Uploadé sur un hébergement classique OVH; Je ne peux pas donner le lien c'est sur le Back côté administrateur logué :)
L'occasion de voir qu'en Local c'est bien plus rapide je dirai même quasi-instantanné (-1seconde en tout cas)

tleb, il y a 10 ans

Les requêtes de pages sont aussi lentes ?

Huggy, il y a 10 ans

Je vois que tu insères des images dans ta table,
est-ce que la boucle $each n'attend pas le chargement de l'image avant de réitérer ?
tu pourrais concaténer tous tes 'tr' et ne faire qu'un seul append en sortie de boucle.
Le temps d'attente est-il proprotionnel au nombre de 'tr' que tu insères ?