AJAX Speedtester

Dennis Wronka

Soulcollector
Ich bin ja sonst nicht so der JavaScript-Wizard und wollte deshalb einfach mal ein paar Meinungen zu dem kleinen Speedtester hoeren den ich grad mal so zusammengeschustert hab.
Wuerdet Ihr noch etwas anders machen oder findet Ihr das Script in der Form nutzbar?

Javascript:
<html>
<head>
<script type="text/javascript">
if (window.XMLHttpRequest)
	{
		http=new XMLHttpRequest();
	}
else if (window.ActiveXObject)
	{
		http=new ActiveXObject("Microsoft.XMLHTTP")
	}
var starttime;
function handlehttpreply()
{
	if ((http.readyState==4) && (http.status==200))
		{
			var now=new Date();
			var time=(now.getTime()-starttime)/1000;
			var filesize=http.getResponseHeader("Content-Length")/1024;
			var speed=filesize/time;
			document.open();
			document.write(speed.toFixed(1)+" KB/s");
			document.close();
		}
}
function speedtest()
{
	if (http)
		{
			url='http://localhost/groff.tar.bz2';
			http.open('GET',url,false);
			var now=new Date();
			starttime=now.getTime();
			http.send(null);
			handlehttpreply();
		}
	else
		{
			alert('Speedtest cannot be started.');
		}
}
</script>
</head>
<body onload="speedtest();">
Testing download speed...
</body>
</html>

Nachtrag: Ich hab das Script grad mal ein wenig ueberarbeitet da 2 Probleme festgestellt habe: http.responseText.length ist kleiner als die wirkliche Dateigroesse, der Content-Length-Header entspricht dem richtigen Wert, und im IE kann ich darauf nichtmal zugreifen.
Der Code oben ist nun also der aktuell genutzte (naja, genutzt wird der Code nicht wirklich, das war nur mal so eine Ueberlegung und ich hab das dann einfach mal umgesetzt).

Nachtrag 2: Der Code ist jetzt uebrigens in folgenden Browsern erfolgreich getestet worden:
  • Konqueror (dort funktioniert die Ausgabe zwar nicht, aber mit alert() sieht man den Wert)
  • Firefox 1
  • Firefox 2
  • Mozilla
  • Seamonkey
  • IE 5.5
  • IE 6
  • IE 7
  • Opera 9 (aber scheinbar nicht in 9.10)
 
..... der Content-Length-Header entspricht dem richtigen Wert, und im IE kann ich darauf nichtmal zugreifen.

Mmmmh...bei mir wird dieser Header auch vom IE korrekt ausgelesen.

Du solltest an die URL noch einen aktuellen Timestamp ranhängen, damit bei wiederholten Tests die Anfrage nicht aus dem Cache bedient wird,ansonsten hab ich nix zu Mäkeln :)
 
Nachtrag: Ich hab das Script grad mal ein wenig ueberarbeitet da 2 Probleme festgestellt habe: http.responseText.length ist kleiner als die wirkliche Dateigroesse, der Content-Length-Header entspricht dem richtigen Wert, und im IE kann ich darauf nichtmal zugreifen.
Mmmmh...bei mir wird dieser Header auch vom IE korrekt ausgelesen.
Hmm, ich glaub da hab ich mich etwas konfus ausgedrueckt. Der Content-Lenght-Header funktioniert bei mir auch im IE (und eben auc den anderen Browser) nur kann ich im IE nicht auf http.responseText.length zugreifen. Das war gemeint. :) Hab wohl mal wieder einen Nebensatz zu viel (oder vielleicht etwas unpassend) eingeschoben.

Du solltest an die URL noch einen aktuellen Timestamp ranhängen, damit bei wiederholten Tests die Anfrage nicht aus dem Cache bedient wird,ansonsten hab ich nix zu Mäkeln :)
Sehr gute Idee, werd ich mal fleissig umsetzen.
 
Hi

woran kann das liegen, wenn ich immer ein "Infinity KB/s" bekomme?

Hab die URL natürlich angepasst, also auf eine Datei die auf meinem Server liegt. z.B. ein Bild...aber hab auch schon probiert einfach nur die URL auf ein HTML-Dokument zeigen zu lassen.

Benutze den FireFox2 und den MSIE 6.0 ...hat jemand eine Idee?

Edit: Im Firefox bekomme ich jetzt bei einem Bild ab und zu eine kb-zahl, aber auch ab und zu noch das "Infinity" angezeigt. Ist mein Inet zu schnell? ;) Hab DSL6000

Gruß
Laura
 
Zuletzt bearbeitet:
Ich kann mir kaum vorstellen dass Deine Verbindung zu schnell ist.
Ich hab das ganze damals lokal getestet, und schneller sollte wohl kaum machbar sein. ;)

Ich hab den Code lange nicht mehr angefasst, aber ich kann mal schauen ob's was zu verbessern gibt.
Alternativ probier doch mal eine groessere Datei, vielleicht ist die von Dir genutzt einfach zu klein.
 
Die Datei ist ca. 10 kb groß (ein thumbnail bild)... wenn da eine Zahl kommt, schwankt die auch ziemlich stark zwischen 100 und 600 ;) obwohl ich nebenbei nichts im inet mache. vielleicht muss man da über einen längeren Zeitraum mehrere Messungen machen und dann die mittlere lineare Abweichung berechnen?

Gruß
Laura
 
Hmm, 10KB ist ja heut nicht die Welt. Probier doch einfach mal eine Datei mit ein paar hundert KB, oder gar einem MB.
Da dauert der Test dann was laenger, sollte aber entsprechend auch etwas genauer sein.
Wenn Du dann immer noch keine Angabe bekommst ist wirklich irgendwas komisch...
 
Hab die URL natürlich angepasst, also auf eine Datei die auf meinem Server liegt. z.B. ein Bild...aber hab auch schon probiert einfach nur die URL auf ein HTML-Dokument zeigen zu lassen.

ist bei jedem Test der angegebene Host im JS und der im Browser der gleiche? denn Ajax funktioniert nur aufm gleichen Host, nen vielfacher Fehler ist da, dass man oft in der Adressezeile die Seite einmal mit www und einmal ohne hat, denn das es mal funktioniert und mal nicht, kann ich mir ohne das genannte nicht vorstellen
 

Neue Beiträge

Zurück