如何获取用户在某个页面的逗留时间?

今天了解到有个指标统计有问题,特意去了解下,原来是「用户浏览页面的时间」,然后找了两个解题思路,记录一下。

解题思路 方案说明 缺点
Client端统计 对Window对象的beforeunloadpagehide事件、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:单个用户可用的最大进程数量(超过会报错)