droom: Ladezeit meiner Seite

Hi Folks,

wie isses möglich, die Ladezeit einer seite unten anzuzeigen?
Das geht bestimmt mit JS oder?  oder gibt es einer PHP-Variante?

vg,

droom

  1. Hi droom!

    wie isses möglich, die Ladezeit einer seite unten anzuzeigen?

    Für PHP:
    Speichere den Rückgabewert von microtime am Anfang eines Scripts und ziehe diesen Wert vom Rückgabewert der selben Funktion am Ende des Scripts ab.
    Beachte aber, dass damit nur die Zeit für die Abarbeitung des PHP-Scripts berechnet wird. Die Ladezeit einer Seite wirst du so nicht herausfinden.

    Das geht bestimmt mit JS oder?

    Wenn Javascript eingsetzt werden kann, ist der Kuchen schon lange gegessen.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Das geht bestimmt mit JS oder?
      Wenn Javascript eingsetzt werden kann, ist der Kuchen schon lange gegessen.

      nein, javascript die die schlagsahne auf oben drauf - sie wird üblicherweise mit dem kuchen mitgeliefert

      es gibt aber auch leute, die keine schlagsahne mögen :p

      1. Hallo zusammen!

        Das geht bestimmt mit JS oder?
        Wenn Javascript eingsetzt werden kann, ist der Kuchen schon lange gegessen.
        nein, javascript die die schlagsahne auf oben drauf - sie wird üblicherweise mit dem kuchen mitgeliefert

        So rein aus Neugierde und Interesse mal nachgefragt:
        Zunächst denke ich, sollte man genau den Zeitraum definieren, den man mit der Zeitmessung erfassen will. Wenn ich unter "Ladezeit" jetzt die verstrichene Zeit zwischen Beginn des Skripts auf dem Server, bis zu dem Zeitpunkt, wo der Brwoser beim Client die Seite vollständig gerendert hat, verstehe, dann wäre doch imho bspw. eine Kombination von PHP und Javascript das Mittel der Wahl, oder?

        Wie bereits hier erwähnt, PHP zur Startzeitbestimmung. Diesen Wert als Javascript Variable mitsenden. Und beim Client auf das Rendern warten, um dann per JS die Endzeit und somit die Dauer zu ermitteln und auf der Seite anzuzeigen.

        Mich interessiert nur, ob das u.a. eine praktikable Möglichkeit wäre? Dass es nur mit aktiviertem JS usw. funktioniert, ist dabei schon klar.

        Gruß Gunther

        1. echo $begrüßung;

          Wie bereits hier erwähnt, PHP zur Startzeitbestimmung. Diesen Wert als Javascript Variable mitsenden. Und beim Client auf das Rendern warten, um dann per JS die Endzeit und somit die Dauer zu ermitteln und auf der Seite anzuzeigen.
          Mich interessiert nur, ob das u.a. eine praktikable Möglichkeit wäre? Dass es nur mit aktiviertem JS usw. funktioniert, ist dabei schon klar.

          Eher nicht. Eine Uhrzeitangabe scheidet aus, weil die Uhren von Server und Client nicht unbedingt übereinstimmen müssen. Eine Angabe der (bis dahin) verbrauchten Scriptlaufzeit in den Javascript-Teil der Ausgabe einzufügen und dann auf dem Client weiterzurechnen ist ebenfalls nicht genau genug. Der Client fängt ja schon recht zeitig an, das empfangene auszuwerten. Zu dem Zeitpunkt muss der Rest der Ausgabe noch nicht beim Client angekommen sein. Man muss den Zeitwert also schon recht früh dem Client bekanntgeben, sonst verbraucht der vielleicht Renderzeit und kommt erst danach dazu, den Wert zu beachten. Auch wenn das PHP-Script eine Zeitangabe schon recht zeitig an den Client sendet gibt es Laufzeit im Netz, die weder vom Client noch vom Server ohne aufwendige generelle Laufzeitmessungen nicht berücksichtigt werden konnte. Die Netzlaufzeit beginnt ja bereits wenn der Anwender seinem Rechner mitteilt, dass er einen Wunsch hat. Der muss dazu gegebenenfalls erst mal den DNS-Server ansprechen, was Zeit verbraucht, ehe überhaupt der Webserver kontaktiert werden kann.

          Im Allgmeinen ist so eine Ladezeit-Anzeige nur als Scriptlaufzeit für den Serverbetreiber interessant. Auf das Netzwerk und das langsame Modem beim Anwender hat er keinen Einfluss. Dem Anwender nützt die Angabe nichts. Er wartet nicht nach der Stoppuhr sondern nach Gefühl.

          echo "$verabschiedung $name";

          1. Hallo Jungs!

            Mich interessiert nur, ob das u.a. eine praktikable Möglichkeit wäre? Dass es nur mit aktiviertem JS usw. funktioniert, ist dabei schon klar.

            Eher nicht. Eine Uhrzeitangabe scheidet aus, weil die Uhren von Server und Client nicht unbedingt übereinstimmen müssen.
            OK. Zum Hintergrund meiner Frage:

            Für einen Besucher ist das imho eh uninteressant. Ich habe aber ein kleines privates Projket, dass mir ziemlich langsam erscheint. Nun würde ich gerne für mich mal sehen, wo eigentlich die ganze Zeit verbraucht wird. Vom Skript selber, oder vom Server (durch bspw. Redirects), oder ...?
            Somit könnte ich das Uhrzeit-Problem ja schon mal eleminieren.

            Eine Angabe der (bis dahin) verbrauchten Scriptlaufzeit in den Javascript-Teil der Ausgabe einzufügen und dann auf dem Client weiterzurechnen ist ebenfalls nicht genau genug. Der Client fängt ja schon recht zeitig an, das empfangene auszuwerten. Zu dem Zeitpunkt muss der Rest der Ausgabe noch nicht beim Client angekommen sein. Man muss den Zeitwert also schon recht früh dem Client bekanntgeben, sonst verbraucht der vielleicht Renderzeit und kommt erst danach dazu, den Wert zu beachten.

            Versteh' ich nicht ganz. Ich möchte ja die Gesamtzeit ermitteln, bis das angeforderte Dokument vollständig fertig geladen und gerendert ist? Wobei ggf. eine Auflistung/ Splittung der Zeiten auf verschiedene Bereiche ganz praktisch wäre.

            Auch wenn das PHP-Script eine Zeitangabe schon recht zeitig an den Client sendet gibt es Laufzeit im Netz, die weder vom Client noch vom Server ohne aufwendige generelle Laufzeitmessungen nicht berücksichtigt werden konnte.

            Warum? Wenn beide dieselbe Uhrzeit haben, ergibt sich diese doch bspw. aus der Differenz zwischen Eintreffen beim Client - Absenden vom Server?

            Die Netzlaufzeit beginnt ja bereits wenn der Anwender seinem Rechner mitteilt, dass er einen Wunsch hat. Der muss dazu gegebenenfalls erst mal den DNS-Server ansprechen, was Zeit verbraucht, ehe überhaupt der Webserver kontaktiert werden kann.

            Die Zeit für die Anforderung der Seite kann man auch außen vor lassen.

            Im Allgmeinen ist so eine Ladezeit-Anzeige nur als Scriptlaufzeit für den Serverbetreiber interessant. Auf das Netzwerk und das langsame Modem beim Anwender hat er keinen Einfluss. Dem Anwender nützt die Angabe nichts. Er wartet nicht nach der Stoppuhr sondern nach Gefühl.

            Full ACK

            Gruß Gunther

            1. Yerf!

              Für einen Besucher ist das imho eh uninteressant. Ich habe aber ein kleines privates Projket, dass mir ziemlich langsam erscheint. Nun würde ich gerne für mich mal sehen, wo eigentlich die ganze Zeit verbraucht wird. Vom Skript selber, oder vom Server (durch bspw. Redirects), oder ...?
              Somit könnte ich das Uhrzeit-Problem ja schon mal eleminieren.

              Für eine solche Analyse würde ich neben einer ermittlung der Zeit rein auf dem Server (so wie anfangs hier im Thread beschrieben) vor allem auf clientseitige Tools setzen. FireBug liefert z.B. eine Auflistung aller Requests für eine Seite inklusive der Zeit die sie benötigt haben. Über einen Proxy (z.B. Fiddler2) kann man sich auch den Verlauf aller Requests/Responses schön anschauen (inklusive Zeitangabe).

              Gruß,

              Harlequin

              --
              <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
              1. Hi Harlequin!

                Für eine solche Analyse würde ich neben einer ermittlung der Zeit rein auf dem Server (so wie anfangs hier im Thread beschrieben) vor allem auf clientseitige Tools setzen. FireBug liefert z.B. eine Auflistung aller Requests für eine Seite inklusive der Zeit die sie benötigt haben.

                Jepp - man sollte das halt auch mal aktivieren. ;-)
                Danke für den Tipp - das bringt schon mal eine Menge Infos!

                Gruß Gunther

            2. echo $begrüßung;

              Ich möchte ja die Gesamtzeit ermitteln, bis das angeforderte Dokument vollständig fertig geladen und gerendert ist?

              Nein, ich glaube, dass du das eigentlich nicht möchtest, denn die ist nicht weiter interessant, weil sie dir bei der Ursachenbeseitigung nicht viel hilft.

              Wobei ggf. eine Auflistung/ Splittung der Zeiten auf verschiedene Bereiche ganz praktisch wäre.

              Das ist schon eher von Belang. Denn nur wenn du weißt, welcher Teil die Zeit verbraucht, kannst du den weiter untersuchen.

              Warum? Wenn beide dieselbe Uhrzeit haben, ergibt sich diese doch bspw. aus der Differenz zwischen Eintreffen beim Client - Absenden vom Server?

              Das setzt voraus, dass beide Uhren synchronisiert sind.

              Es ist nicht sehr sinnvoll, Performance-Probleme unter Einbeziehung des von dir nicht beinflussbaren Netzes zu analysieren. Wenn die Anbindung der Flaschenhals ist, kann das nur der Provider klären. Wenn du des Browsers langsames Rendern als Ursache vermutest, gib ihm eine statische Seite, miss die Zeit, die er braucht. Bestätigt sich diese Vermutung kannst du versuchen, ihm weniger schwierig zu rendernden Code vorzusetzen. Die Erzeugungszeit seitens des Servers empfiehlt sich nur dort zu messen. Für Messungen bei Übertragungsproblemen eignen sich ebenfalls wieder statische Daten besser als diesen Teilaspekt zusammen mit anderen Aspekten gemeinsam zu untersuchen. Erst wenn du für alle Einzelkomponenten ausschließen kannst, dass sie die Ursache sind, solltest du das Zusammenspiel testen. Zunächst jeweils zwischen zwei Komponenten. Dass das Problem nur bei einem Zusammenspiel aller Komponenten auftritt ist recht unwahrscheinlich.

              Die Netzlaufzeit beginnt ja bereits wenn der Anwender seinem Rechner mitteilt, dass er einen Wunsch hat. Der muss dazu gegebenenfalls erst mal den DNS-Server ansprechen, was Zeit verbraucht, ehe überhaupt der Webserver kontaktiert werden kann.
              Die Zeit für die Anforderung der Seite kann man auch außen vor lassen.

              Ja, aber auch das kann Wartezeit sein, die in dein "kleines privates Projekt, dass mir ziemlich langsam erscheint" mit einfließt.

              echo "$verabschiedung $name";

        2. Mich interessiert nur, ob das u.a. eine praktikable Möglichkeit wäre? Dass es nur mit aktiviertem JS usw. funktioniert, ist dabei schon klar.

          jein, da javascript lokal läuft und php am server, schon eine abweichende systemzeit um ein paar sekunden macht dein vorhaben zunichte

          die generierungszeit am server speichern und zu der renderzeit (lokal) dazuzählen wäre ein möglichkeit

          wobei ich nicht sicher bin, ob du die renderzeit mittels javascript wirklich messen kannst

  2. Hi,

    wie isses möglich, die Ladezeit einer seite unten anzuzeigen?

    Nutze für FF Firebug -> Netzwerk, dort werden Dir die Ladezeiten in ms angezeigt. Für IE lade Dir den Entwickler-Proxy fiddler runter, der kann das sogar grafisch darstellen

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. Yerf!

      Für IE lade Dir den Entwickler-Proxy fiddler runter, der kann das sogar grafisch darstellen

      Jo, schönes Tool und funktioniert sogar mit jedem Browser (man muss ihn nur händisch als Proxy eintragen).

      Gruß,

      Harlequin

      --
      <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->