Philipp Hasenfratz: Ladegeschwindigkeit

Beitrag lesen

Halihallo _lieber_ Klaus ;-)

vielen Dank fuer den (recht dumm beginnenden) Kommentar.

bitte ;-)

Es geht jedoch nicht darum eine bestehende Website zu optimieren, sondern ich moechte eine erstellen, die sich je nach Ladegeschwindigkeit unterschiedlich aufbaut. So bloed ist das Vorhaben doch gar nicht. Es waer doch nett mit einem analogen Modem zuerst eine Textinformation zu bekommen und sich dann entscheiden kann...
Per DSL sollte (je nach momentaner Performance) Bildmaterial, o. ae. direkt geladen werden.

Naja, gut. Ich glaube zwar immer noch, dass der Aufwand etwas den Nutzeffekt übersteigt, aber du hast mir jetzt aufgezeigt, dass du dieses "Feature" wenigstens für was "sinnvolles" brauchst und dann bin ich auch bereit zu helfen ;-)

Also zurück zum Problem: Es ist ein Ding der Unmöglichkeit, die Ladegeschwindigkeit reel zu messen. Wenn du glück hast, kannst du eine einigermassen relevante Referenzgeschwindigkeit messen...
Also, die Geschwindigkeit möchtest du ja vom Client-PC abhängig machen, also brauchst du eine clientseitiges Programm dazu (JavaScript). Da gibt's schlichtweg keine Möglichkeit herauszufinden, wie gross die Übertragungsgeschwindigkeit ist. Aber was du tun kannst ist eine pseudo-Page erstellen, wo du dann misst, wie lange es geht um sie zu laden. Eg. kannst du einen Timer iniziieren, den du abbrichst, wenn z. B. 20 Bilder geladen (eine For-Schlaufe über einige Image-Objekte) sind (du weisst dann 9 Sekunden für 150kb), oder du kannst vielleicht etwas mit dem Event <body onLoad="stopTimer();"> machen. Aber ich sage dir gleich jetzt: Die Daten die du aus diesen Analysen gewinnen wirst, sind von verschiedensten Faktoren abhängig (ja, sogar bei verschiedenen Browsern wirst du andere Werte bekommen). Es kommt leider auch auf die Implementation von JavaScript in den Browsern an (keine Ahnung, vielleicht wird beim laden des Image-Objektes ein neuer Thread gebildet und der eigentliche Source-Code gleich weiterabgearbeitet, was das Resultat gigantisch verfälschen würde), Caching, wieviele andere Anwendungen das INet benutzen (eg. vielleicht hat der Benutzer noch andere Browser-fenster offen, die INet-Ressourcen benutzen), oder der Server ist mal ausgelastet und wird lahm etc. etc. etc...

Etwas sicherer wäre es vielleicht, wenn du auf der Serverseite arbeiten würdest, mit perl/php/asp/python und was es sonst noch alles gibt. Du könntest den Client-Browser dazu veranlassen eine pseudo-page zu laden, jeder Request wird an ein Serverprogramm geleitet, wo dann der Timestamp des ersten Requests und der des letzten gespeichert werden und so die differenz der beiden die Ladezeit der Page beträgt. Du müsstest natürlich bei jedem Request auf die Page eine ID vergeben, die dann in allen URL's angepasst wird (es könnte ja sein, dass zwei Requests zur selben Zeit eintreffen, von verschiedenen Client-Computern, diese musst du durch die ID "unterscheiden" können).

Zum Schluss möchte ich auch noch sagen, dass du wahrscheinlich immer eine "pseudo-page" benötigst, um die Ladezeiten zu ermitteln und ein Mass für die Geschwindigkeit zu erhalten; nur so neben bei: um diese zu Laden vergeht auch Zeit... Deshalb bin ich auch der Meinung, dass der Aufwand den Nutzeffekt übersteigt, nicht nur aus Sicht des Programmieraufwandes.

Viele Grüsse

Philipp