有没有什么简单的方法可以监控用户浏览页面的时长?
谷歌分析通过允许您查看您的网站访问者在特定页面上停留的时间来使用此功能。像这样的东西可以用 PHP 或 JavaScript 复制吗?
有没有什么简单的方法可以监控用户浏览页面的时长?
谷歌分析通过允许您查看您的网站访问者在特定页面上停留的时间来使用此功能。像这样的东西可以用 PHP 或 JavaScript 复制吗?
是的,这很容易。只需在页面加载时启动计时器并将其发送到某些服务器脚本以在用户离开页面时进行记录。
要触发页面离开事件,请阅读此处。
示例客户端代码:
<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。
执行此操作的常用方法是简单地测量一个页面视图与下一个页面视图之间的时间。不过,这有很多“陷阱”!
为了解决这些问题,另一种常见的方法是轮询服务器。您可以通过长轮询(连接保持打开状态,一分钟左右没有数据传输,然后立即建立另一个连接)或每 5 秒左右重复访问您的服务器来执行此操作。我推荐长轮询方法,因为它占用的带宽要少得多。
我认为您可以尝试使用该window.onbeforeunload
方法来触发 ajax 调用。当页面加载时,记录时间,当它卸载时,使用 ajax 将经过的时间发送到您的服务器。该页面显然永远不会看到响应,但这并不重要。
正如布拉德指出的那样,这有点不可靠。另一种方法是每隔几秒用经过的时间更新服务器。您还应该将间隔时间的一半添加到经过的时间,以平均计算上次更新和用户离开之间的时间。例如,如果您每 10 秒更新一次,而最后一次更新是 40 秒,则假设它们存在 45 秒。这涵盖了未记录的 40.0 秒到 49.999 秒之间的情况。
您可以在控制器环境中执行此操作,如果用户正在查看特定网页(以及在哪里),则会跟踪用户的眼睛。如果您仅将浏览器内跟踪用于常见的事情,例如用户接到电话或切换到其他选项卡以及我们每天在打开浏览器时所做的所有事情,这通常有助于消除问题。