10

我喜欢衡量用户在我的 webapp 的特定页面上花费的时间。首先,我考虑在浏览器中捕获 onunload/onbeforeunload 事件,并通过 XMLHttpRequest 通知服务器用户现在要离开,例如:

<body onunload="userLeaves('/url/to/current/page',xxx);" ...> ... </body>

其中 xxx 是呈现页面时的初始 tiemstamp。

不幸的是,该解决方案不适用于所有浏览器(例如 Opera)。所以我的第二个想法是不断地ping服务器。要计算访问时间,必须将最后一次 ping 时间从初始时间戳中减去。但我认为这也不是一个好的解决方案,尤其是当用户打开 3 个或 5 个选项卡并且每个选项卡每 500 毫秒触发一次事件时......

你如何衡量访问时间?有人有更好的主意来获得花在一个特定页面上的时间吗?

4

4 回答 4

3

Google Analytics 等工具使用的方法是将访问时间测量为用户在一次“访问”中点击首页到点击最后一页的时间。单次访问被定义为一个用户 (cookie) 的一系列页面查看,其中每次访问在时间上与前一次足够接近。但是我不知道这个限制是多少。

根据我的经验,这些带有卸载事件等的技巧几乎是侵入性的,用户不会欣赏它们。因此,与从 cookie 和页面视图数据构建访问等更被动的方法相比,它们几乎没有任何价值。

于 2009-08-24T16:29:30.330 回答
1

根据您的一些业务目标,我建议几乎任何网络分析包。

  1. 谷歌分析:(免费)
  2. 雅虎分析:(免费)(测试版)
  3. Woopra:(免费)(测试版)
  4. Omniture:(昂贵)(功能最丰富,学习曲线困难)

[还有其他的,一些更适合广告网络报告...]

于 2009-08-24T16:39:43.663 回答
0

为什么不看看 Google Analytics,标准跟踪将为您捕获这些统计数据。

http://www.google.com/analytics/

于 2009-08-24T16:30:31.357 回答
0

这取决于您允许多少错误。如果错误在几十分钟左右,只需要一个访问日志,并设置最后一页的会话超时间隔。如果您只允许数百毫秒,您将需要 ping。如果错误介于两者之间,您仍然需要 ping,尽管速率较低;或者接受这样一个事实,即关闭浏览器的用户不会触发 onunload 事件。

于 2009-08-24T16:32:50.713 回答