我需要了解我的网站上每个页面的平均“页面停留时间”或“页面浏览时长”,而无需客户端脚本(例如使用onunload
事件处理程序)。
有任何免费的日志分析器可以做到这一点吗?我查看了 Webalizer、AWStats 和 Analog,但它们似乎没有这样的功能。AWStats 中最接近的是“访问时长”,但我希望看到“页面浏览时长”。
我知道,如果没有客户端脚本,访客跟踪会不准确,但我可以忍受。Google Analytics 似乎提供了“页面停留时间”指标,而无需挂接事件onunload
(但如果我错了,请纠正我),所以我相信这是可能的。
答案1
我确实赞扬你关于从您的网络日志中可以知道和不能知道的内容的模拟文档,尤其是作者写的部分:
你无法知道人们花了多长时间阅读每个页面。同样,你无法知道在连续的页面请求之间他们正在阅读哪些页面。他们可能正在阅读他们之前缓存的一些页面。他们可能通过链接离开你的网站,然后稍后再回来。他们可能中断阅读,快速玩一局扫雷游戏。你就是不知道。
您无法知道人们在您的网站上停留了多长时间。除了上一点中的问题之外,还有另一个完全令人困惑的问题。报告网站停留时间的程序会计算从第一个请求到最后一个请求之间的时间。但它们不会计算在最后一页上停留的时间,而这通常是整个访问的大部分时间。
《模拟》的作者斯蒂芬·特纳是个聪明人,曾是剑桥统计学家,我倾向于同意他的观点。他在我上面发送的链接中证明了自己的观点。
Analog 会告诉您从您的网络统计数据中可以肯定知道的内容,而且会非常快速地告诉您。试图获得更多数据就是猜测,如果您想要猜测,为什么要付钱让别人来做呢?随机数生成器五花八门,所以请使用其中一种。
答案2
正如 Madhatter 所写,依靠日志获取这些信息并不能提供准确的信息。此外,与大多数统计数据一样,你必须花费大量时间思考你实际测量的是什么- 人们花时间浏览网页是因为网页有趣还是因为难以理解?用 javascript 捕获数据与查看日志的行为截然不同(考虑当用户打开多个窗口时会发生什么情况)。
据我所知,目前还没有可用的工具,无论是商业的还是免费的,可以进行这种分析——包括 Google Analytics(马尔菲:你能提供参考吗?)。但是,编写自己的日志并不太费力 - 但你肯定需要使用 mod_usertrack 或需要会话来区分用户 - 并记录相关 cookie 以及请求的 mimetype - 这意味着你不再使用标准日志格式。
从好的方面来看,同样的机制还允许您开始关注缓存有效性和点击流分析(这也是当前大多数分析仪所不擅长的领域)。
答案3
警告:这种方法可能会也可能不会对您的网络服务器的性能造成难以言喻的损害。
如果您正在运行 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
...然后您可以通过查看服务器日志中不同值的相对受欢迎程度来大致了解人们浏览内容的时间。
答案4
Nihuo 网络日志分析器支持此功能。它不是免费的,但是他们的网站上有 30 天的全功能免费评估版。