私は asp.net Web サイトを作成しており、ほぼ正確なヒット カウンターを実装したいと考えています。SessionStartに基づくオンラインソリューションはあまり正確ではないことを理解していたので、ユーザーのマシンにCookieを配置し、各SessionStartでそのCookieの存在をチェックできるのではないかと考えていました。存在する場合は、そのリクエストをカウントしません。それ以外の場合は、Cache["hits"] に 1 つ追加して、ターゲット マシンに新しいヒット 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 は、サイトのメンバーではなく、訪問者をカウントするための他の方法よりもはるかに信頼性が高く、はい、それらを削除できます。そのように、ユーザーを 2 回カウントしても問題ないと思います。少なくとも、新しいセッションを開始するボットやクローラーは数えていません。