2009-08-24 5 views
10

Ich möchte die Zeit messen, die ein Benutzer auf einer bestimmten Seite meiner Webapp verbracht hat. Zuerst dachte ich, über die onunload/onbeforeunload Ereignis im Browser zu kontrollieren und den Server über einen XMLHttpRequest benachrichtigen, dass der Benutzer verlässt, wird jetzt mag:So messen Sie die Besuchszeit eines Benutzers

<body onunload="userLeaves('/url/to/current/page',xxx);" ...> ... </body> 

wo xxx die inital tiemstamp ist, wenn die Seite gerendert wurde.

Leider funktioniert diese Lösung nicht in allen Browsern (z. B. Opera). Also war meine zweite Idee, den Server ständig zu pingen. Um die Besuchszeit zu berechnen, muss jemand die letzte Ping-Zeit nehmen und sie vom ursprünglichen Zeitstempel subtrahieren. Aber ich denke nicht, das ist eine gute Lösung, vor allem, wenn ein Benutzer 3 oder 5 Tabs geöffnet hat und jede Registerkarte feuert alle 500 ms Ereignisse ...

Wie würden Sie die Besuchszeit messen? Hat jemand eine bessere Idee, die Zeit auf einer bestimmten Seite zu erhalten?

+0

wie hat yo Du machst am Ende? Ich denke auch darüber nach, den Server anzupingen – brauliobo

Antwort

3

Der von Google Analytics verwendete Ansatz besteht darin, dass die Besuchszeit als die Zeit gemessen wird, in der der Benutzer die erste Seite bis zum Zeitpunkt der letzten Seite innerhalb eines einzigen "Besuchs" erreicht. Ein einzelner Besuch wird als eine Reihe von Seitenaufrufen von einem Benutzer (Cookie) definiert, wobei jeder Besuch zeitlich ausreichend nahe bei dem vorherigen ist. Ich weiß nicht, was diese Grenze ist.

Nach meiner Erfahrung grenzt diese Art von Tricks mit Unload-Ereignissen und so weiter auf aufdringlich zu sein und Benutzer schätzen sie nicht. Als solche fügen sie wenig oder gar keinen Wert gegenüber einem passiveren Ansatz hinzu, wie dem Aufbau eines Besuchs von Cookies plus Seitenansichtsdaten.

0

Es hängt davon ab, wie viel Fehler, den Sie erlauben würde. Wenn der Fehler in der Größenordnung von mehreren zehn Minuten liegt, benötigen Sie nur ein Besuchsprotokoll und das Sitzungs-Timeout-Intervall für die letzte Seite. Wenn Sie nur Hunderte von Millisekunden zulassen, müssen Sie pingen. Wenn der Fehler irgendwo dazwischen liegt, müssen Sie immer noch pingen, wenn auch mit einer niedrigeren Rate; oder akzeptieren Sie die Tatsache, dass für einen Benutzer, der den Browser herunterfährt, das onunload-Ereignis nicht ausgelöst wird.

1

Ich schlage fast jedes Webanalysepaket vor, abhängig von einigen Ihrer Geschäftsziele.

  1. Google Analytics: (frei)
  2. Yahoo Analytics: (kostenlos) (beta)
  3. Woopra: (kostenlos) (beta)
  4. Omniture: (teuer) (die meisten Reichen, schwierige Lernkurve)

[es gibt andere, einige mehr zugeschnitten auf Ad Network Berichterstattung ...]