Как измерить время посещения пользователя
Мне нравится измерять время, проведенное пользователем на определенной странице моего веб-приложения. Сначала я подумал о том, чтобы перехватить событие onunload/onbeforeunload в браузере и уведомить сервер с помощью XMLHttpRequest, который пользователь покидает сейчас, например:
<body onunload="userLeaves('/url/to/current/page',xxx);" ...> ... </body>
где ххх - начальная отметка времени, когда страница отображалась.
К сожалению, это решение не работает во всех браузерах (например, Opera). Поэтому моей второй идеей было постоянно пинговать сервер. Чтобы рассчитать время посещения, кто-то должен взять время последнего пинга и вычесть его из начальной метки времени. Но я не думаю, что это хорошее решение, особенно когда пользователь открывает 3 или 5 вкладок, а каждая вкладка запускает события каждые 500 мс...
как бы вы измерили время посещения? Есть ли у кого-то лучшая идея, чтобы получить время, проведенное на одной конкретной странице?
4 ответа
Подход, используемый такими инструментами, как Google Analytics, заключается в том, что время посещения измеряется как время, в течение которого пользователь нажимает на первую страницу, до времени, когда он нажимает на последнюю страницу в течение одного "посещения". Один визит определяется как серия просмотров страниц одним пользователем (cookie), где каждый визит достаточно близок к предыдущему по времени. Однако я не знаю, что это за предел.
По моему опыту, подобные трюки с событиями выгрузки и т. Д. Граничат с навязчивостью, и пользователи их не ценят. Как таковые, они мало что добавляют или теряют ценность по сравнению с более пассивным подходом, таким как построение посещения из файлов cookie и данных о просмотре страницы.
Я предлагаю практически любой пакет веб-аналитики в зависимости от некоторых ваших бизнес-целей.
- Google Analytics: (бесплатно)
- Yahoo Analytics: (бесплатно) (бета)
- Woopra: (бесплатно) (бета)
- Omniture: (дорого) (наиболее многофункциональный, сложная кривая обучения)
[есть и другие, некоторые более приспособленные для отчетности по рекламной сети...]
Это зависит от того, сколько ошибок вы допустите. Если ошибка составляет порядка десятков минут, вам нужен только журнал посещений и установите интервал ожидания сеанса для последней страницы. Если вы разрешите только сотни миллисекунд, вам нужно будет пропинговать. Если ошибка где-то посередине, вам все равно нужно пинговать, хотя и с более низкой скоростью; или принять тот факт, что для пользователя, который выключил браузер, не будет запускаться событие onunload.
Почему бы не взглянуть на Google Analytics, стандартное отслеживание будет собирать эту статистику для вас.