用什么方法来计算一个用户停留在某个网页的时间呢?

绿悠悠 发布于 2011/09/13 16:02
阅读 6K+
收藏 1

我需要知道用户停留在某个页面的时间,这该如何处理呢?

另外现在有项目要求计算用户的在线时长,对一个web项目来说,在线时长到底应该如何衡量呢?

加载中
0
IBMdW
IBMdW
如果是纯JS实现的话,可以考虑如下代码:
var startTime = new Date();
var endTime;

window.onunload = function()
{
 endTime = new Date();
 var elapsedSeconds = endTime.getTime() - startTime.getTime();
 //Do the ajax request, sending elapsedSeconds
}
0
justin_wd
justin_wd

我们这边的一些方案是:

用户载入页面时向服务端发送一个异步请求,请求中包含用户id,页面url地址等。

服务端将每一条记录加上时间。

最后可以筛选出某用户的访问序列,以及间隔时间,可以计算到某url地址所停留的时间。

当然最后一直访问的页面停留时间会访问不了!

 

绿悠悠
绿悠悠
这样岂不是要在服务器记录很多数据?
0
justin_wd
justin_wd

是的,如果你只是统计某一页面的访问时长。

可以试试:载入时,将开始计时的信息发送到服务端。

然后给页面中所有的链接都加上onclick事件(通过jquery的选择器应该很方便吧)

这个onclick事件,将结束计时的信息发送到服务端。。

 

gxj413真身
gxj413真身
这种侵入方式太恐怖了
0
星星爷
星星爷

这个数据在某些统计中是有意义。     可是能统计的很准确吗?

比如说我打开主页 然后又在新窗口中打开子页面,一直的看这个子页面,那个主页就没有关,但是我也没看, 那这个数据没有什么实质意义的,就是一个过度...

0
岛
交给那些 统计网站好了  这个也自己写 太浪费了把 
0
loyal
loyal
看oschina统计在线人数的方法就行了.过滤器里判断就行了.
0
罪恶的花生
罪恶的花生
在线时长,你没有具体说明是计算那种在线时长,如果是页面上的在线时长,你可以在页面上设置一个Timer,定时服务器报道一下,如果是登陆后的在线时长,可以再登陆时记录用户的登录时间,用户在每次访问的时候更新用户的刷新时间,如果超过你的session时间,用户都没有再次访问,可视为用户已离线,或由用户自己进行登出操作。
0
winters
winters

曾经的做法是,在页面上写一个js的定时方法,每隔一定的时间向后台发送一个异步的心跳,标识该用户仍然“活着”。不过后来发现这样做很消耗服务器内存。就改成了在beforeUnload()方法里发送心跳。虽然不能区分刷新和关闭,不过够用了。

张文亮
张文亮
具体怎么弄啊?
0
scl33
scl33

页面上可以计算, 在window.onload和onbeforeunload2个事件中计算.

后台计算可以使用sessionListener, web.xml中配置一个监听器, 该监听器实现HttpSessionListener接口, 分别在sessionCreatedsessionDestroyed中计算, 存入数据库. 但是这个方法不是很准确, 因为用户不通过正常手段退出时(如直接关闭浏览器), session并没有关闭, 需要等到session失效(根据你的设置, tomcat默认是30分钟), 才会触发sessionDestroyed, 所以这里存在一定的误差(具体根据你的session失效时间设置而改变). 如果使用此方式, 可以在页面大框架中使用window.onbeforeunload事件向服务器发出退出请求, 并主动注销session, 即使用户关闭浏览器, 也可以立即触发sessionDestroyed, 避免误差.

0
返回顶部
顶部