检测用户退出站点

Detect user exit site

本文关键字:站点 退出 用户 检测      更新时间:2023-09-26

我迫切希望检测用户何时离开我的站点,以便准确记录有关用户的会话长度。我已经想到了几个可能的解决方案:

我首先想到我可以使用onbeforeunload并发送一个简单的ajax来记录最后一个活动,但实践告诉我,onbeforeunload现在是不可靠的,使用它是一个坏主意,因为它不是跨浏览器。

然后我想我可以使用cookie来记录用户的会话长度,每次用户显示活动时分别增加cookie值。这里的问题是,我无法检测到哪一个将是用户的最后一个活动,我可以安全地插入会话长度,并知道它是准确的唯一可能的方法是当用户没有登录相当长一段时间,cookie的值将是最后的会话长度。这可能不适合我,因为许多用户可能只是打开网站一次,再也不会访问它(例如),那么这些用户都不会被记录。

有人有解决这个问题的办法吗?我似乎已经搜索过了,但我找到的答案没有一个是令人满意的。

提前感谢!

您无法判断用户何时离开您的站点,这基本上不受互联网底层技术的支持。您所能做的就是告诉会话过期前最后一次请求的时间。

您可以使用Javascript轮询。例如,如果您有一个使用Ajax加载新信息的股票代码文本或图像滚动器,那么您可以使用这些请求的次数来猜测最后一个活动。您也可以为它做专门的请求,但对于访问者来说,这是对带宽的浪费,他们可能不喜欢这种严格监控的想法。

您还可以测量页面视图之间的时间,并将最后一个页面视图(exit-page)排除在等式之外。

这个问题似乎得到了一些关注,所以我想我应该更新一下答案,因为它已经持续了近10年。

自2013年以来,WebSockets已经取得了长足的进步,socket可以用来确定(几乎)准确的用户离开网站的时刻。

对于一个流量很大的网站来说,这可能不是一个好主意,因为它可能需要复杂的管理,而且很可能在共享主机上不可用,所以在使用它之前请确保您熟悉这项技术。

如果需要为特定用户执行此操作,那么最好的方法是执行一个Ajax请求,例如每60秒一次,并在数据库中记录其会话的时间戳。当你测量响应时,你可以将任何超出合理截止时间的内容分类为"离开"(例如,典型的浏览器会话为20分钟)。

如果你不需要个人用户的数据,只想要一个访问者的平均指标,你不妨使用谷歌分析。