缓存页面但计数命中

时间:2010-08-22 21:20:46

标签: c# asp.net caching outputcache

我有一个aspx页面,它计算每次访问并创建一个cookie。但是如果我使用OutputCache页面计数只是第一个请求页面的访问者。我该如何防止这个错误?

页面指令:

<%@ 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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

这一点有什么意义?营销信息?使用脚本中的轻量级分析计数器或页面中的图像,而不是混合使用生成页面本身。问题在于,您正在为繁忙的请求添加额外的工作,而不是为额外的工作提供自己的请求。