我正在构建 ASP.Net MVC 应用程序“有点游戏”,它与在线用户进行大量处理。
我让 Ajax 请求每隔 “10s”
触发一些 Action
,以在用户保持网站打开时保持用户在线。
此用户
的操作
更新LastActivityDate
-((在静态列表和数据库中))。
所以问题是:
- 是否最好将在线用户存储在静态列表中,并在用户登录时编写一些代码将其添加到该列表中,然后每隔
“10s”管理该列表
踢出离线用户。 - 或者最好是加载在线用户
每当我需要
OnlineUsers
时来自数据库。
注意:我正在使用此 SO Question 中的技术定期执行一些任务,例如重新管理 OnlineUsers 静态列表。
最佳答案
首先,您不会使用 List<User>
为此,而是 Dictionary<int,User>
,使用用户的id作为key,这样就可以立即找到要更新的用户。其次,我认为这可能是两者的混合。您保留当前用户的缓存副本,定期从数据库刷新,并将数据(如果需要,异步)保存到数据库。如果您发现在代码中的不同位置执行此类操作,您可能需要考虑为用户封装此行为的自定义持久性类。
关于asp.net - Asp.Net 中的静态列表<User> VS 在线用户数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134149/