









On pourrait se demander pourquoi utiliser AJAX pour tes
ter la bande passante…
Plusieurs réponses :
Pour tester la bande passante, on va charger un fichier et faire une moyenne en fonction de temps de ce téléchargement.
Par exemple :
| Taille | 500Ko | _ |
| Temps | 3000ms | 1000ms (soit 1s) |
Et on obtient : (500*1000)/3000 = 166.6 ko/s
Evidement ce test fluctut en fonction de l'occupation de votre bande passante (si vous téléchargez, regardez des vidéo en streaming, etc.)
Voici un script qui va tester votre bande passante tout en affichant la progression du test :
function AJAXRequest(page,retfonc,startload,progress,methode,data) { var xhr_object = null; if(window.XMLHttpRequest) // Firefox xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } if (data=="") data=null; if(methode == "GET" && data != null) { page += "?"+data; data = null; } xhr_object.open(methode, page, true); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) { var RetAjax=xhr_object.responseText; eval(retfonc+'(RetAjax);'); } if(xhr_object.readyState == 1) { eval(startload+'();'); } if(xhr_object.readyState == 3) { var RetAjax=''; if (!document.all) var RetAjax=xhr_object.responseText; eval(progress+'(RetAjax);'); } } if(methode == "POST") xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.send(data); } function testBp() { avant=new Date(); avant=avant.getTime(); AJAXRequest(Fichier,"ApresAjax","StartAjax","ProgressAjax","GET",avant); } function StartAjax() { document.getElementById('loading_bar').style.width="0px"; } function ProgressAjax(v) { if (v=='') var percent=parseInt(document.getElementById('loading_bar').style.width)+10; else var percent=Math.round((v.length*parseInt(document.getElementById('loading').style.width))/TailleImg,0); document.getElementById('loading_bar').style.width=percent+"px"; } function ApresAjax(v) { document.getElementById('loading_bar').style.width=document.getElementById('loading').style.width; apres=new Date(); apres=apres.getTime(); duree=apres-avant; debit=Math.round( (TailleImg/(apres-avant) ) *10 ) /10; document.getElementById('resultBp').innerHTML="duree="+duree+"ms debit="+debit+"Ko/s"; } var avant; var TailleImg=852907; var Fichier="testfile.tmp";
Et pour la mise en forme, il vous faut le code HTML suivant :
<body onload="testBp()"> <div id="loading" style="display:block;height:50px;width:300px;border:1px solid #000;overflow:hidden"> <div id="loading_bar" style="display:block;height:50px;width:0px;background:#0000CD"> </div> </div> <div id="resultBp"></div> <a href="javascript:testBp();" style="display:block;border:1px solid #000;background:#efefef">Tester la bande passante</a>
Il n'y a que très peu de choses à changer dans ce script.
Vous devez simplement modifier ces 2 variables :
var TailleImg=852907; var Fichier="testfile.tmp";
La 1ere est la taille en octet du fichier choisi pour les tests
La 2eme est le nom du fichier.
Vous pouvez tester ce script sur notre pages d'évaluation de votre bande passante
debit=Math.round( (TailleImg/(apres-avant) ) *10 ) /10;
par celle ci:
debit=(debit==0)?(Math.round( (TailleImg/(apres-avant) ) *10 ) /10):debit;
Ensuite, vous pouvez appeler la fonction ApresAjax :
<a href="javascript:debit=5;Apresajax('');">Forcer un bas debut</a> <a href="javascript:debit=500;Apresajax('');">Forcer un haut debut</a>
04/12/2006 15:42 -
Discussion
Je recherche pr completer ce script le test de l'upload … bien sur en Javascript …
si quelqu'un a cette info je suis preneur .