IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Navigation ajax lente (5 secondes de délai)


Sujet :

AJAX

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut Navigation ajax lente (5 secondes de délai)
    Bonjour,
    j'ai mis sur mon site la navigation en ajax en faisant comme ceci:

    html:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="url" class="ajax"> Lien1 </a>

    javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            $(".ajax").bind("click",function(){
                var url=$(this).attr('href');
                $.get(url,{},function(data){
     
                    $(".content").empty().append(data);
                    history.pushState(null,null,url);
               }
              }
    Ca a tjrs trés bien fonctionné.
    Mais depuis quelque temps maintenant, mes requêtes sont systématiquement bloqué 5000ms à la réception. Quelque soit le type de page, ça coince toujours au même endroit...auriez vous une idée??

    Merci par avance

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 952
    Points : 44 069
    Points
    44 069
    Par défaut
    Bonjour,
    Quelque soit le type de page, ça coince toujours au même endroit.
    Certes mais lequel ?

    Comme tu utilises un lien, <a>, pour lancer ta commande, il te faut inhibé le comportement par défaut de celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(".ajax").bind("click",function(event){
        // inhibe le comportement par défaut
        event.preventDefault();
    peut-être même que ton history.pushState(null,null,url) ne servira plus à rien.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Bonjour
    ça coince systématiquement sur la réception avec un délai toujours proche de 5 secondes

    Nom : xhr.JPG
Affichages : 281
Taille : 28,3 Ko

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1-.bind() est déprécié. Il faut utiliser .on().

    2- .empty().append(...) : si on veur juste remplacer par du code html, .html(...) convient et suffit.

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	$("a.ajax").on("click",function(event){
    		event.preventDefault(); // inhibe le comportement par défaut
    		var url = $(this).attr('href');
    		$.get(url,{},function(data){
    			$(".content").html(data);
    			history.pushState(null,null,url);
    		}
    	}
    N.B. ".content" : si c'est un conteneur UNIQUE, il vaudrait mieux utiliser un id.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Salut,
    merci j'ai fait les changements .on(), html() et preventDefault()

    Par contre ça ne change rien au niveau de la réception
    Nom : xhr_chrome.JPG
Affichages : 265
Taille : 33,1 Ko

  6. #6
    Invité
    Invité(e)
    Par défaut
    Comme on ne sait rien du fichier importé, on ne peut rien dire de plus.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Le fichier importé n'a rien de particulier,
    ça le fait sur n'importe quelle page du site, ça à toujours trés bien fonctionné et du jour au lendemain la navigation est devenu bloqué 5 secondes.

    Sachant qu'en local ça fonctionne trés bien, j'ai pas ce deadlock.

    Voici par exemple une vue que je charge en ajax:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <?php 
    $points=0.0;
     ?> 
     
    <div class="row">
     
      	<div class="col-md-6">
      		<div class="panel panel-warning" >
    			<div class="panel-heading">Informations</div>
     
    			<p style="padding:5px;">Vous devez avoir suffisamment de points dans votre cagnotte pour pouvoir remonter des annonces. Vous avez actuellement <span class='text-info' style='font-weight: bold;'><?php echo $points; ?> points </span> dans votre cagnotte.
    			</p>
     
    			<p style="padding:5px;" class="text-warning">
    				<strong>Attention: </strong> blablabla mon texte
    			</p>
     
    		</div>
    	</div>
     
    </div>

  8. #8
    Invité
    Invité(e)
    Par défaut


    Teste avec $.post() au lieu de $.get().

    Sinon, je ne vois pas.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Je viens de tester en post() ça ne change rien..

  10. #10
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 952
    Points : 44 069
    Points
    44 069
    Par défaut
    Sachant qu'en local ça fonctionne trés bien, j'ai pas ce deadlock.
    Pourrais tu mettre un exemple en ligne pour que l'on juge.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Voila en local:
    Nom : localxhr.JPG
Affichages : 268
Taille : 70,5 Ko

  12. #12
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 952
    Points : 44 069
    Points
    44 069
    Par défaut
    Je parlais d'un lien en ligne accessible pour que l'on puisse se rendre compte du délai de réponse sur ton serveur.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Bonsoir,
    Il m'est difficile de donné l'accès à un site qui nécessite une authentification , par contre j'ai fait une petite vidéo


    Nom : 2019-06-02_22h26_35.gif
Affichages : 294
Taille : 1,88 Mo

  14. #14
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 404
    Points : 4 840
    Points
    4 840
    Par défaut
    Salut,
    Tu ne vois pas d'erreur dans la console ? parce qu'il manquent des parenthèses de fermeture ligne 7 et 8 de ton premier post
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $(".ajax").on("click",function(e){
          e.preventDefault();
          var url=$(this).attr('href');
           $.get(url,{},function(data){
                $(".content").empty().append(data);
                history.pushState(null,null,url);
           });//ici
    });//et ici

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Bonsoir,
    c'était juste un pb de copier/coller, non je n'ai pas d'erreurs dans la console.

    En revanche je me suis rendu compte que même sans passer par ajax, j'obtiens ce délai de chargement tjrs de l'ordre de 5 secondes même pour des vues qui n'affichent que du statique. J'ai un peu monitoré tout ça et on s’aperçoit qu'il y a 3.6 secondes d'iDLE.

    Nom : monitoring1.JPG
Affichages : 227
Taille : 112,6 Ko


    Ici on s’aperçoit que tout est chargé du cache donc presque instantanément et la page met quand même 5 secs à charger.

    Nom : monitoring2.JPG
Affichages : 229
Taille : 200,1 Ko

    Avez-vous une idée ?

  16. #16
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 404
    Points : 4 840
    Points
    4 840
    Par défaut
    utlises-tu des script js dans ta page ?
    Si oui, essaie de les mettre en bas de la page, juste avant la fin de body et refais le teste.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Oui j'en utilise plein, qui sont déja en bas de page juste avant le </body>

  18. #18
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 404
    Points : 4 840
    Points
    4 840
    Par défaut
    Vérifies bien qu'il n'y a pas de script qui s'exécute en mode synchrone. parce que d'après ton dernier post, c'est la partie "scripting" qui met trop de temps à se charger.

    Essaies aussi de commenter les scripts un par un, puis tu fais le teste afin de déterminer quel est le script qui pose problème.

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Malgré le fait qu'ils soient tous chargés du cache en 0ms, il est possible que ça provienne d'un script ? il y aurait donc distinction entre temps de chargement et temps d’exécution ?

  20. #20
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 404
    Points : 4 840
    Points
    4 840
    Par défaut
    Je ne sais pas si je dis n'importe quoi, mais je pense qu'il y a une différence quand même entre "chargement" et "exécution" d'un script js.

    Si un expert pourra nous éclairer, ce serai gentil.

    Regarde un peu ce lien, il peut t'aider.

    Il y a aussi des outils en ligne qui permettent d'analyser les performances de ton site s'il est en ligne comme PageSpeed Insights et DareBoost.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/01/2010, 13h53
  2. Réponses: 4
    Dernier message: 02/12/2009, 20h27
  3. Ajax lent ! (sortable)
    Par roduce dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 27/10/2009, 13h39
  4. [Prototype] La navigation ajax
    Par Jerome38190 dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 17/11/2008, 21h43
  5. [AJAX] navigation ajax (aide)
    Par speedylol dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/10/2006, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo