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 :

[AJAX] Gros callback : blocage navigateur


Sujet :

AJAX

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [AJAX] Gros callback : blocage navigateur
    Bonjour,

    J'ai réalisé un script de crible d’Ératosthène en PHP (renvoie tout les nombres premiers de 0 a n).

    A la fin du traitement, ma requête Ajax renvoie un tableau 'jsonp' des nombres premiers en callback pour ensuite l'afficher dans une div.

    Cependant lorsque le tableau de retour est très gros (environ >= 100000 nombres) le navigateur se bloque le temps du callback et du remplissage de ma div (ce qui peut sembler logique).

    Du coup je me demande si il est possible par n'importe quel méthode d'éviter ce blocage de navigateur pour les gros callback. Ma requête Ajax est bien asynchrone et ce n'est pas le traitement mais l'envoie de la réponse qui bloc le navigateur.

    Quelqu'un aurait t-il une idée ? Existe t-il d'autres méthodes moins traditionnelles pour les grosses requêtes Ajax ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par maxtheirish Voir le message
    Ma requête Ajax est bien asynchrone et ce n'est pas le traitement mais l'envoie de la réponse qui bloc le navigateur.
    Euh... Soit c'est asynchrone, soit l'envoi de la réponse bloque le navigateur. C'est l'un ou c'est l'autre. (Et si effectivement l'envoi de la réponse bloque le navigateur, la solution est bel et bien de rendre la requête asynchrone.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    C'est certainement au moment d'écrire dans le DOM que le navigateur bloque, tu n'y peut pas grand chose, sinon comme le dit maxtheirish c'est que tu es pas en asynchrone.
    Après je sais pas avec quoi, ni comment tu remplis ton <div> mais remplir ta page en javascript est souvent une action coûteuse.

  4. #4
    Membre confirmé
    Avatar de tse_jc
    Homme Profil pro
    Data Solutions
    Inscrit en
    Août 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Data Solutions
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 287
    Points : 597
    Points
    597
    Billets dans le blog
    4
    Par défaut
    C'est certainement au moment d'écrire dans le DOM que le navigateur bloque
    Oui il ne peut y avoir d'autres possibilités.
    Peux-tu nous dire comment l'insertion est-elle réalisée dans le DOM?

    Souvent l'erreur qui est commise est de réaliser l'insertion donnée par donnée, ou dit différemment si j'ai 10 nodes à insérer dans le DOM (un lien hypertexte dans une div par exemple) 10 insertions sont effectuées, et par conséquent 10 mises à jour du DOM sont faites.

    Ceci est evidemment une très mauvaise pratique surtout pour l'insertion de grandes quantités de données comme dans ton cas de figure, qui de plus consiste ici à insérer toute cette volumétrie en un seul point du DOM.

    La bonne méthode consiste à créer un node et à le peupler comme bon te semble, et ensuite insérer le node dans le DOM en une seule insertion (toutes les insertions dans le DOM qui se respectent devraient être implémentées ainsi). Peux-tu donc vérifier si cela a été fait comme cela, et si ce n'est pas le cas, faire les modifs et nous remonter les nouvelles performances de ton insert? ça m'interesse.

    ++

  5. #5
    Invité
    Invité(e)
    Par défaut
    Tout est dit, le PHP appelé par AJAX ne doit renvoyer qu'un seul "echo"
    quelque soit son poid !
    Contrairement a ce que tu crois c'est le (a mon aviss) PHP appelé qui dépasse son temps d'exécution.
    Donc je te conseils vivement de mettre dans la boucle de traitement
    de ce PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    set_time_limit(10); 
    ?>
    Tu verras alors que c'était là le probléme
    A++
    Christele

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    Si il est en asynchrone c'est pas le php qui bloque le navigateur, y a plus de chance que ce soit l'insertion dans le DOM qui fasse ramer le tout.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par benjyyyyy Voir le message
    Si il est en asynchrone c'est pas le php qui bloque le navigateur, y a plus de chance que ce soit l'insertion dans le DOM qui fasse ramer le tout.
    Évidemment
    Mais cela permet de cumuler (concatener) les données et ne faire qu'un écho final
    A++
    Christele

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/09/2009, 19h16
  2. Réponses: 4
    Dernier message: 31/08/2009, 14h44
  3. [AJAX] site ajax : pb avec les navigateurs
    Par nicols dans le forum AJAX
    Réponses: 5
    Dernier message: 28/05/2009, 23h39
  4. [AJAX] blocage navigateur IE+ajax
    Par khadir dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/09/2008, 12h43
  5. [AJAX] setinterval en ajax fonction sous le navigateur sauf sous explorer
    Par speedylol dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/01/2008, 15h34

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