我想知道我网站上的在线访问者数量。我进行了研究并找到了两种解决方案。
来源: ASP.NET 中的 Code Project
Online 活动用户计数器
它易于设置和使用,但它也增加了每个 Ajax 请求/响应的用户数。仅我的主页就有 12 个 Ajax 请求(一个页面有 8 个请求,另一个页面有 4 个请求)。这大大增加了用户数量。
资料来源:Stack Overflow Q/A
统计访客人数
这一项与上一项完全相同。
来源:ASP.Net 论坛 如何使用 C# 查看“谁在线”
这个看起来比前两个好。这是此解决方案的详细代码。
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
HttpContext.Current.Application["visitors_online"] = 0;
}
void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 20; //'20 minute timeout
HttpContext.Current.Application.Lock();
Application["visitors_online"] = Convert.ToInt64(HttpContext.Current.Application["visitors_online"]) + 1;
HttpContext.Current.Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
HttpContext.Current.Application.Lock();
Application["visitors_online"] = Convert.ToInt64(HttpContext.Current.Application["visitors_online"]) - 1;
HttpContext.Current.Application.UnLock();
}
它似乎可以忽略每个 Ajax 响应的计数增加,但它仍然会为每个页面刷新或页面请求加起来。
有什么方法可以准确统计 ASP.Net 中的在线访问者数量吗?