监控页面查看时间

时间:2011-11-18 16:34:15

标签: php javascript monitoring pageviews

有没有简单的方法来监控用户查看网页的时间?

Google Analytics使用此功能,您可以查看您的网站访问者在特定网页上停留的时长。可以用PHP或JavaScript复制这样的东西吗?

4 个答案:

答案 0 :(得分:2)

是的,这很容易。只需在页面加载时启动计时器,并在用户离开页面时将其发送到某个服务器脚本进行记录。

要离开活动页面,请阅读here

客户端代码示例:

<html>
...
<script>
var visit_start_time_ms = (new Date).getTime();
window.onbeforeunload = function() {
    var visit_time = (new Date).getTime() - visit_start_time_ms;
    xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET","http://your-tracking-server.com/track.php?track_url=...&visit_time=" + visit_time,true);
    xmlhttp.send();
};
</script>
...
</html>

your-tracking-server.com/track.php上的服务器端脚本:

...
mysql_query('INSERT INTO track_visit_time (url, time) VALUES ("'.myescape($_GET['track_url']).'", '.float($_GET['visit_time']).')');
...

介意,客户端没有经过测试,根本没有测试过。服务器端使用不推荐使用的函数mysql_query。

答案 1 :(得分:1)

执行此操作的常用方法是简单地测量一个页面视图与下一个页面视图之间的时间。虽然有很多“陷阱”!

  • 您不知道最后一页加载的时间
  • 你不知道反弹的时间
  • 多个标签会发生问题,而
  • 则不会出现问题
  • 有人在您的网页上停留了4个小时,还是他们关闭了浏览器又回来了?

要解决这些问题,另一种常用方法是轮询服务器。您可以使用长轮询(连接保持打开状态,一分钟左右没有数据传输,然后立即建立另一个连接),或者每隔5秒左右重复点击一次服务器。我推荐使用长轮询方法,因为它的带宽密集度要小得多。

答案 2 :(得分:0)

我认为您可以尝试使用window.onbeforeunload方法触发ajax调用。页面加载时,记录时间,当它卸载时,用ajax将经过的时间发送到服务器。该页面显然永远不会看到响应,但无论如何这都无关紧要。

布拉德指出这有点不可靠。另一种方法是每隔几秒钟用经过的时间更新服务器。您应该将间隔的一半添加到经过的时间,以平均考虑上次更新和用户离开之间的时间。例如,如果您每10秒更新一次,最后一次更新说40秒,则假设它们在那里45秒。这包括40.0秒到49.999秒之间没有记录的情况。

答案 3 :(得分:0)

您可以在控制器环境中执行此操作,如果用户眼睛在特定网页上(以及在哪里)查看,则会跟踪用户眼睛。如果您只在常见的事情中使用浏览器内跟踪,例如用户正在接听电话或切换到其他标签以及我们每天打开浏览器时所做的所有事情,这通常可以解决问题。