我正在创建一个asp.net网站,我想实现一个几乎准确的点击计数器。据我所知,基于SessionStart的在线解决方案不是很准确,所以我想也许我可以在用户机器上放一个cookie,并在每个SessionStart上检查该cookie是否存在,如果它存在则不计算该请求,否则加一个Cache [“hits”]并在目标机器上创建一个新的命中cookie。可以这样做吗?
public void Session_Start(object sender, EventArgs e)
{
HttpCookie cookie = Request.Cookies.Get("hitCookie");
if(cookie == null)
{
object hitsObj = Cache["hits"];
if(hitsObj != null)
{
int hits = Convert.ToInt32(hitsObj);
Cache["hits"] = hits + 1;
cookie = new HttpCookie("hitCookie");
Response.Cookies.Add(cookie);
}
}
}
如果你认为可能会在用户计算机上禁用cookie,那么请记住,asp.net会员资格也不会默认工作。
更新:Cookie比计算访问者的其他方法更可靠,而不是您网站的会员,是的,您可以删除它们,我想这样做可以两次计算用户。至少我不算任何开始新会话的机器人或爬虫。