Анализатор логов, который рассчитывает "время на странице"?

Мне нужно получить представление о среднем "времени на странице" или "продолжительности просмотра страниц" для каждой страницы на моих веб-сайтах без сценариев на стороне клиента (таких как использование onunload обработчик события).

Может ли какой-нибудь бесплатный анализатор логов сделать это? Я посмотрел на Webalizer, AWStats и Analog, но у них, похоже, такой функции нет. Самым близким является "продолжительность посещений" в AWStats, но я бы хотел вместо этого видеть "продолжительность просмотра страниц".

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

5 ответов

Я рекомендую вам аналоговую документацию о том, что есть и что нельзя узнать из ваших веб-журналов, особенно ту часть, где автор пишет:

Вы не можете сказать, сколько времени люди потратили на чтение каждой страницы. Еще раз, вы не можете сказать, какие страницы они читают между последовательными запросами страниц. Они могут читать некоторые страницы, которые они [кэшировали] ранее. Они могли перейти по ссылке с вашего сайта, а затем вернуться позже. Возможно, они прервали их чтение для быстрой игры Сапер. Ты просто не знаешь.

Вы не можете сказать, сколько людей провели на вашем сайте. Помимо проблем в предыдущем пункте, есть еще один полный стоп-шоу. Программы, которые сообщают время на сайте, считают время между первым и последним запросом. Но они не считают время, проведенное на последней странице, и это часто составляет большую часть всего посещения.

Стивен Тернер, автор аналога, умный парень, бывший статистик из Кембриджа, и я склонен с ним согласиться. Свои аргументы он обосновывает ссылкой, которую я отправил выше.

Analog расскажет вам, что определенно известно из вашей веб-статистики, и очень быстро. Попытка получить больше - это догадки, и если вы хотите угадать, зачем платить кому-то другому, чтобы сделать это? Генераторы случайных чисел стоят пять копеек, поэтому используйте один из них.

Как пишет Madhatter, использование этой информации в журналах не дает точной картины. Кроме того, как и в случае с большинством статистических данных, вам приходится тратить много времени на размышления о том, что вы на самом деле измеряете - люди проводят время на странице, потому что она интересная или потому что ее трудно понять? Захват данных в javascript даст совсем другое поведение по сравнению с просмотром журналов (рассмотрим, что происходит, когда у пользователя открыто несколько окон).

AFAIK, нет доступных ни коммерческих, ни бесплатных инструментов для такого анализа, в том числе Google Analytics (malfy: можете ли вы предоставить ссылку?). Тем не менее, написание собственного не является чрезмерной нагрузкой - но вам, безусловно, нужно будет использовать mod_usertrack или требовать проведения сессий для различения пользователей - и регистрировать соответствующий cookie вместе с mimetype для запроса - что означает, что вы больше не используете стандартный форматы журналов.

С другой стороны, тот же механизм позволяет вам начать анализировать эффективность кэширования и анализ кликов (также в областях, в которых большинство анализаторов текущего поколения плохо разбираются).

Предупреждение. Этот метод может вызывать или не вызывать невыразимые ужасы производительности вашего веб-сервера.


Если вы работаете с 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? Я использовал это - прекрасно работает.

Nihuo Web Log Analyzer поддерживает эту функцию. Это не бесплатно, но есть 30-дневная бесплатная ознакомительная версия с полной функциональностью на их сайте.

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