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 :

  • Je récupère une réponse Json qui ne fait même pas 1Ko, ce n'est donc pas le poids de la réponse qui pose problème

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

8 réponses


Huggy
Réponse acceptée

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 ?

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) ?

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 ?

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 :)

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);
                });
            }
        });

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

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)

Les requêtes de pages sont aussi lentes ?