Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to measure visiting time of a user

I like to measure the time a user spent on a particualr page of my webapp. First i thought about catching the onunload/onbeforeunload event in the browser and notify the server via a XMLHttpRequest that the user is leaving now like:

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

where xxx is the inital tiemstamp when the page was rendered.

Unfortunately this solution doesnt work in all browser (e.g. Opera). So my second idea was to ping the server constantly. To calculate the visiting time someone has to take the last ping time and subtract it from the inital timestamp. But i dont think thats a good solution either especially when a user has opend 3 or 5 tabs and every tab is firing events every 500 ms ...

how would you measure the visiting time? has someone a better idea to obtain the time spent on one particualr page?

like image 211
Chris Avatar asked Aug 24 '09 16:08

Chris


2 Answers

The approach used by such tools as Google Analytics is that visit time is measured as the time the user hit the first page to the time they hit the last page within a single "visit". A single visit is defined as a series of page views by one user (cookie) where each visit is sufficiently close to the previous in time. I don't know what that limit is however.

In my experience, these kinds of tricks with unload events and so forth are bordering on being intrusive and users don't appreciate them. As such they add little to no value over a more passive approach like constructing a visit from cookies plus page view data.

like image 95
cletus Avatar answered Nov 02 '22 04:11

cletus


I suggest almost any web analytic package depending on some of your business goals.

  1. Google Analytics: (free)
  2. Yahoo Analytics: (free)(beta)
  3. Woopra: (free)(beta)
  4. Omniture: ( expensive )(most feature rich, difficult learning curve )

[ there are others, some more tailored to Ad Network Reporting...]

like image 1
BigBlondeViking Avatar answered Nov 02 '22 03:11

BigBlondeViking