这几天一直在想,JavaEye是怎么实现用户状态的,知道的童鞋请发言,再就是如果用java怎么实现?
用一个字段,你访问了某些页面,就用这个字段记录你访问的页面。
[quote]能不能说清楚点?[/quote]
哎,好吧:
1 假设数据库里某个表记录用户访问的历史。当然,不是用户访问每个页面都记录的,根据观察,je只有在用户访问部分页面时才进行记录。该表有个字段,可以定义成枚举型: 比如可以定义三种类型: 看帖子,看招聘,看问答等等,当用户访问特定页面后,记录一条用户访问历史。 当你浏览一个帖子,该帖子有改用户的留言,只要查询该用户最新的访问记录是什么类型就行了,当然,一般来说对这个这个记录有个过期时间,超过这个时间应该就没有效果了。
2 上面是一种实现方法,缺点是需要进行连接操作,效率比较低,实践中,je也可能这样实现: 没有上面的表,当用户访问特定的页面时,不往数据库里记,而是把访问信息记录到memcache里,下次直接从memcache里拿数据就行了,而且memcache里存数据可以设有效期,到期自动作废,内存也释放了。
后一种做法效率高,但是缺点是用户访问历史可能是比较好的分析用数据,不记有点可惜。
[quote]是怎么判断用户已经下线呢?
[/quote]
用户点退出按钮会向服务器端发请求,表示下线。
[quote]就是判断用户下线问题我想不明白,很多用户不会乖乖按退出按钮,就是直接关闭页面完事了,如果用js 控制 unload时间在用户关闭窗口时发送ajax事件提醒服务器进行处理,但是用户刷新也会触发unload事件..[/quote]
设个过期时间,一段时间用户不上线就代表下线。