如何衡量用户的访问时间

Chr*_*ris 10 javascript visitor-statistic web-analytics

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

<body onunload="userLeaves('/url/to/current/page',xxx);" ...> ... </body>
Run Code Online (Sandbox Code Playgroud)

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

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

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

cle*_*tus 3

Google Analytics 等工具使用的方法是,访问时间是通过用户在单次“访问”内点击首页的时间到点击最后一页的时间来衡量的。单次访问被定义为一个用户 (cookie) 的一系列页面视图,其中每次访问在时间上都与前一次访问足够接近。但我不知道这个限制是什么。

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