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

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

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

где ххх - начальная отметка времени, когда страница отображалась.

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

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

4 ответа

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

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

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

  1. Google Analytics: (бесплатно)
  2. Yahoo Analytics: (бесплатно) (бета)
  3. Woopra: (бесплатно) (бета)
  4. Omniture: (дорого) (наиболее многофункциональный, сложная кривая обучения)

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

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

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

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

Другие вопросы по тегам