如何获取用户在某个页面的逗留时间?
今天了解到有个指标统计有问题,特意去了解下,原来是「用户浏览页面的时间」,然后找了两个解题思路,记录一下。
解题思路 | 方案说明 | 缺点 |
---|---|---|
Client端统计 | 对Window对象的beforeunload和pagehide事件、Document对象的visibilitychange事件进行监听,当事件触发后调用 window.performance.now() 获取并计算停留时间,并回传给到Server端。 | 可能会监测失败,比较这些事件并不是用户离开的所有触发事件。 |
Server端统计 | 通过socket.io由Server端主动监控Client端的socket连接变化,从而获取并计算页面停留时间。 | 最大并发连接数受系统资源限制。 |
参考socket.io上的性能调优建议,可以通过nofile来增加并发连接(concurrent connections):
soft nofile:可打开的文件描述符的最大数(超过会警告)
hard nofile:可打开的文件描述符的最大数(超过会报错)
顺便记录下nproc的使用:
soft nproc:单个用户可用的最大进程数量(超过会警告)
hard nproc:单个用户可用的最大进程数量(超过会报错)