|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 2 ![]() |
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 ? |
|
|
00
|
|
|
#2 |
![]() ![]() |
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.)
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher du poisson, il videra le lac et au bout de deux ans son village ne mangera plus jamais. Partagez vos connaissances, mais aussi comment s'en servir. |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : juin 2008 Messages : 29 ![]() |
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. |
|
|
00
|
|
|
#4 | |
|
Membre confirmé
![]() |
Citation:
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. ++
__________________
_______________________________________ POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else? |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Christele RubneauInscription : novembre 2009 Messages : 1 050 ![]() |
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 Tu verras alors que c'était là le probléme A++ Christele |
|
|
00
|
|
|
#6 |
|
Futur Membre du Club
![]() Inscription : juin 2008 Messages : 29 ![]() |
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.
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Christele RubneauInscription : novembre 2009 Messages : 1 050 ![]() |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com