Мне нужно получить представление о среднем «времени на странице» или «продолжительности просмотра страницы» для каждой страницы на моих веб-сайтах без сценариев на стороне клиента (например, с использованием onunload
обработчик события).
Способен ли на это какой-либо из бесплатных анализаторов журналов? Я посмотрел на Webalizer, AWStats и Analog, но, похоже, у них нет такой функции. В AWStats самое близкое значение - «продолжительность посещений», но я бы хотел вместо этого видеть «продолжительность просмотра страницы».
Я знаю, что отслеживание посетителей будет неточным без сценариев на стороне клиента, но я терплю это. Google Analytics, похоже, предоставляет показатель "время на странице" без привязки к onunload
событие (но поправьте меня, если я ошибаюсь), поэтому я считаю, что это возможно.
Я рекомендую вам аналоговая документация о том, что можно и чего нельзя узнать из ваших веб-журналов, особенно ту часть, где автор пишет:
Вы не можете сказать, сколько времени люди потратили на чтение каждой страницы. Еще раз, вы не можете сказать, какие страницы они читают между последовательными запросами страниц. Возможно, они читают некоторые страницы, которые [кэшировали] ранее. Они могли перейти по ссылке с вашего сайта, а затем вернуться позже. Они могли бы прервать чтение ради быстрой игры в «Сапер». Вы просто не знаете.
Вы не можете сказать, сколько времени люди провели на вашем сайте. Помимо проблем, описанных в предыдущем пункте, есть еще одно полное препятствие. Программы, которые сообщают о времени на сайте, считают время между первым и последним запросом. Но они не учитывают время, проведенное на последней странице, а это часто составляет большую часть всего посещения.
Стивен Тернер, автор аналога, умный парень, бывший статистик из Кембриджа, и я склонен с ним согласиться. Он оправдывает свои аргументы в ссылке, которую я отправил выше.
Аналог расскажет вам, что определенно можно узнать из вашей веб-статистики, и расскажет очень быстро. Попытка получить больше - это догадки, и если вы хотите угадать, зачем платить кому-то еще за это? Генераторы случайных чисел стоят пять пенни, поэтому используйте один из них.
Как писал Мэдхаттер, использование журналов для получения этой информации не даст точной картины. Кроме того, как и в случае с большинством статистических данных, вам придется потратить много времени думать о том, что вы на самом деле измеряете - люди проводят время на странице, потому что она интересна или потому, что ее трудно понять? Захват данных в javascript будет вести себя совершенно иначе, чем просмотр журналов (подумайте, что происходит, когда у пользователя открыто несколько окон).
AFAIK, нет доступных инструментов, коммерческих или бесплатных, которые бы выполняли такой анализ, включая Google Analytics (малфи: можешь ссылочку дать?). Тем не менее, написание собственного файла не слишком обременительно - но вам, безусловно, нужно будет использовать mod_usertrack или требовать сеансов повсюду, чтобы различать пользователей - и регистрировать соответствующий файл cookie вместе с mimetype для запроса - что означает, что вы больше не используете стандартный форматы журнала.
С другой стороны, тот же механизм также позволяет вам начать анализировать эффективность кеширования и анализ трафика (а также те области, в которых большинство анализаторов текущего поколения плохо справляются).
Анализатор веб-журналов Nihuo поддерживают эту функцию. Это не бесплатно, но на их веб-сайте есть 30-дневная бесплатная ознакомительная версия с полной функциональностью.
Предупреждение: Этот метод может вызвать, а может и не вызвать невыразимые ужасы производительности вашего веб-сервера.
Если вы используете PHP или аналогичный язык сценариев, вы можете сделать что-то действительно ужасное - например:
В нижнем колонтитуле страниц, которые вы хотите отслеживать:
<iframe src="/path/to/script.php?src=<?php echo htmlentities($_SERVER['REQUEST_URI']); ?>&user_ip=<?php echo $_SERVER['REMOTE_ADDR']; ?>" width="1" height="1" style="visibility:hidden;"></iframe>
В "script.php" или в другом названии сценария таймера:
<?php
if ( @isset( $_GET['src'] )
{
$source = filter_var( $_GET['src'], FILTER_SANITIZE_STRING );
} else {
/* no source page to track */
die();
}
if ( @isset( $_GET['minute'] ) )
{
$minute = (int) $_GET['minute'] + 1;
} else {
$minute = 0;
}
$uri_refresh = ($_SERVER['HTTPS'] != 'on') ? 'http://' : 'https://';
$uri_refresh .= $_SERVER['HTTP_HOST'];
$uri_refresh .= '/path/to/script.php';
$uri_refresh .= '?src=' . $source;
$uri_refresh .= '&user_ip=' . $_SERVER['REMOTE_ADDR'];
$uri_refresh .= '&minute=' . $minute;
?>
<html>
<head>
<meta http-equiv="refresh" content="60;url=<?php echo $uri_refresh; ?>">
<title>Timed Logger</title>
</head>
<body style="color:#FFFFFF;">
<p>You have been viewing this page for <?php echo $minute; ?> minutes.</p>
</body>
</html>
... а затем вы сможете приблизительно оценить, как долго люди смотрят что-то, глядя на относительную популярность разных minute
значения в журналах вашего сервера.
Так что использовать Google Analytics? Использовал - отлично работает.