Как измерить время посещения пользователя

Мне нравится измерять время, которое пользователь потратил на страницу somepartr моего webapp. Сначала я подумал о том, чтобы поймать событие onunload/onbeforeunload в браузере и уведомить сервер через XMLHttpRequest, который пользователь сейчас уходит:

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

где xxx - это inital tiemstamp, когда страница была отображена.

К сожалению, это решение не работает во всех браузерах (например, Opera). Поэтому моя вторая идея заключалась в том, чтобы постоянно пинговать сервер. Чтобы рассчитать время посещения, кто-то должен занять последнее время пинга и вычесть его из временной отметки времени. Но я не думаю, что это хорошее решение, особенно если пользователь имеет 3 или 5 вкладки, и каждая вкладка запускает события каждые 500 мс...

как бы вы измерили время посещения? есть ли у кого-то лучшая идея получить время, потраченное на одну конкретную страницу?

Ответ 1

Подход, используемый такими инструментами, как Google Analytics, заключается в том, что время посещения измеряется как время, когда пользователь нажимал первую страницу до момента, когда они попали на последнюю страницу в течение одного "посещения". Один визит определяется как серия просмотров страниц одним пользователем (cookie), где каждое посещение достаточно близко к предыдущему времени. Я не знаю, каков этот предел.

По моему опыту, эти трюки с событиями разгрузки и т.д. граничат с тем, что они навязчивы, и пользователи не ценят их. Таким образом, они добавляют незначительную ценность к более пассивному подходу, например, к созданию посещения файлов cookie и данных просмотра страницы.

Ответ 2

Я предлагаю практически любой веб-аналитический пакет в зависимости от ваших бизнес-целей.

  • Google Analytics: (бесплатно)
  • Yahoo Analytics: (бесплатно) (бета)
  • Woopra: (бесплатно) (бета)
  • Omniture: (дорогой) (большая часть богатой функцией, сложная кривая обучения)

[есть и другие, некоторые из которых больше подходят для рекламной сети...]

Ответ 3

Почему бы не взглянуть на Google Analytics, стандартное отслеживание будет захватывать эти данные для вас.

http://www.google.com/analytics/

Ответ 4

Это зависит от того, сколько ошибок вы допустили бы. Если ошибка составляет порядка десятков минут, вам нужен только журнал посещения и задайте интервал ожидания сеанса для последней страницы. Если вы разрешаете только сотни миллисекунд, вам нужно будет выполнить ping. Если ошибка находится где-то посередине, вам все равно нужно выполнить ping, хотя и с меньшей скоростью; или принять тот факт, что для пользователя, который выключил браузер, не будет запускать событие onunload.