Klaus Walmrath: Ladegeschwindigkeit

Wie kann ich die momentane Ladegeschwindigkeit auswerten?
Ich mochte eine Website bauen, die sich je nachdem wie hoch die Ladegeschwindigkeit ist entsprechend veraendert.

Hat jemand eine Idee?

Vielen Dank,

Klaus Walmrath

  1. Halihallo

    Wie kann ich die momentane Ladegeschwindigkeit auswerten?
    Ich mochte eine Website bauen, die sich je nachdem wie hoch die Ladegeschwindigkeit ist entsprechend veraendert.

    Warum? - Nur, weil die stolzen Besitzer von analogen Internetaccess keine halbe Stunde auf die Page warten wollen, da sie überfüllt mit animierten Gifs, auwendigen und performanceverschlingenden Flash-Animationen sind und dazu der Code von M$ Winword generiert wurde???

    Also zurück zum Thema: Mein Tipp an dich: optimiere den html-code, verkleinere die Auflösung von gifs, vermeide Animationen und lass den code z. B. durch Tidy laufen, dann wirst du die Ladegeschwindigkeit gar nicht mehr messen müssen, da die Page sogar mit 56kbit in 2 Sekunden geladen ist.

    Falls dich das noch nicht überzeugen konnte: Du wirst ziemliche Schwierigkeiten haben, die Ladezeit zu berechnen. Es gibt hier _nur_ und wirklich _nur_ sehr, sehr wage Annäherungen an die Realität. Die Frage ist, wie genau das ganze sein soll und wieviel Zeit du für eine Analyse investieren willst. Und zum Schluss: Vielleicht brauchst du für das Analysescript mindestens genausoviel Zeit, wie den html-code zu optimieren. Wobei ich letzteres empfehle ;-)

    Viele Grüsse

    Philipp

    1. Halihallo

      Wie kann ich die momentane Ladegeschwindigkeit auswerten?
      Ich mochte eine Website bauen, die sich je nachdem wie hoch die Ladegeschwindigkeit ist entsprechend veraendert.

      Warum? - Nur, weil die stolzen Besitzer von analogen Internetaccess keine halbe Stunde auf die Page warten wollen, da sie überfüllt mit animierten Gifs, auwendigen und performanceverschlingenden Flash-Animationen sind und dazu der Code von M$ Winword generiert wurde???

      Also zurück zum Thema: Mein Tipp an dich: optimiere den html-code, verkleinere die Auflösung von gifs, vermeide Animationen und lass den code z. B. durch Tidy laufen, dann wirst du die Ladegeschwindigkeit gar nicht mehr messen müssen, da die Page sogar mit 56kbit in 2 Sekunden geladen ist.

      Falls dich das noch nicht überzeugen konnte: Du wirst ziemliche Schwierigkeiten haben, die Ladezeit zu berechnen. Es gibt hier _nur_ und wirklich _nur_ sehr, sehr wage Annäherungen an die Realität. Die Frage ist, wie genau das ganze sein soll und wieviel Zeit du für eine Analyse investieren willst. Und zum Schluss: Vielleicht brauchst du für das Analysescript mindestens genausoviel Zeit, wie den html-code zu optimieren. Wobei ich letzteres empfehle ;-)

      Viele Grüsse

      Philipp

      Lieber Philipp,

      vielen Dank fuer den (recht dumm beginnenden) Kommentar.
      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.

      Gruesse,

      Klaus Walmrath

      1. 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

  2. <SCRIPT>X=new Date();function C(){Y=new Date();D=Y.getTime()-X.getTime();document.write("It took "+D/1000+" seconds to load the entire page")};C()</SCRIPT>

  3. Hello,

    <SCRIPT>X=new Date();function C(){Y=new Date();D=Y.getTime()-X.getTime();document.write("It took "+D/1000+" seconds to load the entire page")};C()</SCRIPT>

    Gohtig.

  4. Hallo Klaus,

    wie dir aus Philipp's detailreichen Erklärungen klar geworden sein sollte, kann man die Ladeschwindigkeit nicht messen, weil man sie nicht vernünftig definieren kann.

    Zu deinem Problem aber habe ich eine Idee: Schau clientseitig nach der Zeit, wann einzelne, fast gleichzeitig bei Server abgeschickte Datenpakete verfügbar werden; der kleinste gemessene zeiliche Abstand bzw. wieviele Pakete in ein vorgegebenes Zeitfenster (z.B. eine Millisekunde) fallen können, entspricht der Anbindung (Modem/ISDN/DSL). Also nicht schauen, wie lange das letzte Paket braucht bis die Seite endlich vollständig ist, sondern wie schnell es geht, wenn es wirklich gerade zufällig mal optimal schnell geht. (Ob das mit Javascript machbar ist, ohne zu tricksen, weiß ich allerdings nicht; Downloadmanager können sowas jedenfalls anzeigen.)

    Gruß
    Hans35