代码之家  ›  专栏  ›  技术社区  ›  HasanG Joe Dabones

缓存页面但计数命中数

  •  1
  • HasanG Joe Dabones  · 技术社区  · 14 年前

    我有一个aspx页面,它统计每次访问并创建cookie。但是如果我使用OutputCache页面,只计算第一个请求该页面的访问者。我怎样才能防止这个bug?

    页面指令:

    <%@ OutputCache Duration="1200" VaryByParam="mode;page;sid;tid" %>
    

    protected void Page_Load(object sender, EventArgs e)
    {
        //Load single post data
    
        #region Hit Counter
        //hit counter lasts during session
        if (Session["LastHit" + postId] == null)
        {
            cmmnd.CommandText = "UPDATE Posts SET Hits=Hits+1 WHERE PostID=@PostID;";
            cmmnd.ExecuteNonQuery();
            Session["LastHit" + postId] = 1;
        }
        #endregion
    }
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   Waleed Al-Balooshi    14 年前

    这不是一个bug,而是经过设计的。如果页在缓存中并且“缓存的输出仍然有效”,则不会重新处理该页。您可以在此验证阶段运行代码,这可以帮助您执行计算访问次数并将其添加到cookie的任务。以下内容可能会有所帮助:

        2
  •  2
  •   Jon Hanna    14 年前

    这算什么?营销信息?从页面中的脚本或图像使用轻量级分析计数器,而不是与生成页面本身混合使用。错误在于,您将额外的工作添加到更繁忙的请求中,而不是为额外的工作提供自己的请求。