Retourner aux forums || Retourner au forum Programmation.web
Programmation.web : Performances ajax ?
Posté par TNorth () le 12 février 2007J'utilise AJAX pour récupérer une commande système simple, qui prends environ 1 seconde à s'exécuter. (et qui fait un print dans une page php, elle même renvoyée par xmlhttprequest en responseText)
Sur la page web, il faut attendre plus de 10 secondes pour voir le résultat de la page. (j'ai testé le script hors ajax, et il prends 1 seconde d'exécution environ.)
Donc, c'est le navigateur qui attends la réponse.. un peu longtemps !
P.S je sais que innerHTML c'est pas un standard, mais je n'ai pas pris le temps de trouver mieux...
Code:
function xmlhttpPost(strURL, form_name,div_id) {
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() {
if (self.xmlHttpReq.readyState == 4) {
updatepage(self.xmlHttpReq.responseText, div_id);
}
}
self.xmlHttpReq.send(getquerystring(document.forms[form_name]));
}
function getquerystring(Form) {
/*var form = document.forms[form_name];
var word = form.word.value;
qstr = 'w=' + escape(word); // NOTE: no '?' before querystring
return qstr;
*/
var data=""
for (key in Form.elements) {
data+=escape(Form.elements[key].name)+"="+escape(Form.elements[key].value)+"&";
}
return data.substr(0, data.length-1);
}
function updatepage(str, div_id){
document.getElementById(div_id).style.display='block';
if (str.length>0) document.getElementById(div_id).innerHTML = str;
}
Y a-t-il un moyen de remédier à cela ?
Sous IE7, cela ne fonctionne tout simplement pas.
> Lire le message (3 commentaires, moyenne: 1,7).
mea culpa
.. c'est ma faute, le script contenant une erreur (suite à un flag) qui prennait du temps.
Bonne journée.
-
[^]Re: mea culpa
Posté par Raphaël Gertz (Jabber id, page perso, ) le 12/02/2007 à 12:13. (lien). Évalué à 2.Hum, simple info, si tu utilise du .innerHTML => reparse de la page html a chaque fois ça bouffe un max de temps...
Creation a la volée de l'arbre dom => instantané (mais plus de code)
Regarde les extensions de firefox un a un truc génial qui te donne l'arbre dom du document.
Pose un id=XXX dans ton div parent et amuse toi a coup de :
var parent = document.getElementById('XXX');
parent.appendChild(document.createElement('div'));
Enfin un code de ce genre.-
[^]Re: mea culpa
Posté par Moogle (page perso, ) le 12/02/2007 à 16:23. (lien). Évalué à 2.[pub]
Regarde du côté de Prototype aussi (ou autres frameworks), ça va te simplifier la vie, notament pour la compatibilité entre navigateurs.
[/pub]
-
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.web



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.