0

我正在创建一个 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 成员资格也不会起作用。

更新: cookies 比其他计算访问者而不是您网站成员的方法更可靠,是的,您可以删除它们,我认为这样计算用户两次就可以了。至少我没有计算任何启动新会话的机器人或爬虫。

4

0 回答 0