基于web的网站在线统计一直处于不是很精准的状态!基本上没有一种方法可以确实的统计在线用户!
Discuz!NT 在线用户功能算是做得比较好的!参考资料
他的原理大致是根据用户的操作间隔来确定用户是否在线,也可以理解为操作日志,当系统扫描的日志间隔太长将被理解为用户离线,所以要不断的更新操作表和操作表日益增长的烦恼,所以必须定时的清除操作表,当系统启动时要重置表数据!
想到MVC的自带过滤器,在执行方法的前或后对其记录操作!比Discuz!NT的操作可能来得简易了,虽然思想是一样的!
我个人认为在普通网站中用系统自带的session和applocation对象统计在线人数是很不精准的。用户的不退出用户而关闭网站导致session的20分钟缓冲导致在线表不准确,但在系统中又有另一种想法了,因为系统通常在于一个页面的大框架中,用户对不安全退出而关闭系统的行为可以用js来监听,并通过ajax更新用户在线人数,应该是可行的!
我准备考虑用这种方式来做在线人数,用Applocaition存放在线人数,和在线列表。当页面关闭的时候更新在线人数和在线列表,但又考虑多个系统页面共存时候的顾虑!
我不知道大家现在是如何统计在线人数和在线列表的!
但通常的方法已经很明确,想要精准的统计必须付出更多的性能消耗!
下一节:在线用户的精准统计实现,利用MVC过滤器+缓存实现,我考虑把用户列表存在缓存中,对缓存进行用户的增删改。利用过滤器记录和操作缓存