Web:系统将记录用户显示每页的时间长度

Jon*_*len 5 web

我有这个要求:

系统将记录用户显示每页的时间长度.

虽然在富客户端应用程序中微不足道,但我不知道人们通常会如何跟踪这一点.

编辑:John Hartsock

我一直对此感到好奇,在我看来,通过使用document.onunload事件可以实现这一点,可以准确地捕捉星星并停止所有页面的停留时间.基本上只要用户停留在您的网站上,您就可以始终获得除最后一页之外的每个页面的开始和停止时间.这是场景.

  • 用户进入您的网站. - 我有一个主页的开始时间
  • 用户转到您网站的第2页 - 我有一个主页停止时间和第2页的开始时间
  • 用户退出您的网站. - 如何获得第2页的最终停止时间

问题变成是可以跟踪用户何时关闭窗口或导航离开您的网站?是否可以使用onunload事件?如果没有,那么还有什么其他可能性呢?很明显,AJAX将是一条路线,但其他一些路线是什么?

DOK*_*DOK 5

我不认为您可以捕获每一页的查看,但我认为您可能能够捕获足够的信息,以便分析网站使用情况.

使用以下列创建数据库表:网页名称,用户名,开始时间和结束时间.

在页面加载时,将记录INSERT到包含前三个字段的数据的表中.返回该记录的ID以备将来使用.

在任何导航上,使用先前返回的ID更新导航事件处理程序中的记录.

与开始和结束时间的记录相比,开始时间最多会有更多记录.但是,您可以从这个简单的数据中进行这些分析:

  • 您可以通过计算开始时间来计算每个页面的访问次数.
  • 您可以计算用户为具有开始和结束时间的记录显示每个页面的时间长度.
  • 如果您有其他有关用户的信息,例如角色或位置,则可以对页面查看进行更多分析.例如,如果您了解角色,则可以查看哪些角色最常使用哪些页面.

由于某些页面比其他页面更频繁地被放弃,因此您的数据可能会被扭曲.

但是,您当然可以尝试捕获此数据并查看其显示的合理程度.有时在现实世界中,我们必须用不完美的信息来弥补.但这可能就足够了.


编辑:这些方法中的任何一种都可能满足您的需求.

1)这是Ajax解决方案的HTML部分.它来自此页面,其中包含用于在文本文件中记录信息的PHP代码 - 如果您愿意,可以轻松更改为写入数据库.

 <html>
<head>
<title>Duration Logging Demo</title>
<script type=”text/javascript”>
var oRequest;
var tstart = new Date();

// ooooo, ajax. ooooooo …
if(window.XMLHttpRequest)
oRequest = new XMLHttpRequest();
else if(window.ActiveXObject)
oRequest = new ActiveXObject(“Microsoft.XMLHTTP”);

function sendAReq(sendStr)
// a generic function to send away any data to the server
// specifically ‘logtimefile.php’ in this case
{
oRequest.open(“POST”, “logtimefile.php”, true); //this is where the stuff is going
oRequest.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”);
oRequest.send(sendStr);
}

function calcTime()
{
var tend = new Date();
var totTime = (tend.getTime() – tstart.getTime())/1000;
msg = “[URL:" location.href "] Time Spent: ” totTime ” seconds”;
sendAReq(‘tmsg=’ msg);
}
</script>
</head>

<body onbeforeunload=”javascript:calcTime();”>
Hi, navigate away from this page or Refresh this page to find the time you spent seeing
this page in a log file in the server.
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

2)另一种同胞提出创建计时器Page_Load.在那时写下初始数据库记录.然后,在计时器的Elapsed事件上,更新该记录.做最后的更新onbeforeunload.然后,如果由于某种原因你错过了最后一个onbeforeunload事件,至少你会记录用户在页面上花费的大部分时间(取决于计时器Interval).当然,如果您每秒更新一次并且拥有数百或数千个并发用户,则此解决方案将相对耗费资源.因此,您可以对其进行配置,以便为应用程序打开和关闭此功能.