2010-08-22 62 views
1

我有一个aspx页面,计数每次访问并创建一个cookie。但是,如果我使用OutputCache页面,则只计算请求页面的第一位访问者。我怎样才能防止这个错误?缓存页面,但计数点击

Page指令:

<%@ 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 [email protected];"; 
     cmmnd.ExecuteNonQuery(); 
     Session["LastHit" + postId] = 1; 
    } 
    #endregion 
} 
+0

发表一些代码。 – 2010-08-22 21:25:49

回答

2

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

2

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

+0

只是计数博客文章点击。 – 2010-08-22 22:07:28

+0

在这种情况下,我甚至不会打扰分析计数器,但依赖于解析IIS日志。为什么要记录已经记录的数据?如果你真的关心谁在重新查看完全缓存的页面(而不是服务器上的缓存),那么你可以使用分析计数技巧,或者使用像谷歌分析这样的服务(为什么你会因为会话转向什么时候可以?)。 – 2010-08-22 22:13:16