C# 缓存页面,但计算命中率

C# 缓存页面,但计算命中率,c#,asp.net,caching,outputcache,C#,Asp.net,Caching,Outputcache,我有一个aspx页面,它统计每次访问并创建一个cookie。但是如果我使用OutputCache页面,则只统计请求该页面的第一个访问者。如何防止此错误 页面指令: <%@ OutputCache Duration="1200" VaryByParam="mode;page;sid;tid" %> 这不是一个bug,而是经过设计的。如果页面在缓存中并且“缓存的输出仍然有效”,则不会重新处理该页面。您可以在此验证阶段运行代码,这可以帮助您执行计算访问次数并将其添加到cookie的任务。

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

页面指令:

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

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


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


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

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

      在这种情况下,我甚至不需要分析计数器,而是依赖于解析IIS日志。为什么要记录已经记录的数据?如果你真的关心谁在重新查看完全缓存的页面(而不是服务器缓存的页面),那么你可以使用分析计数器技巧,或者使用像google analytics这样的服务(如果可以的话,为什么你会因为打开会话而感到性能头疼呢?)。在这种情况下,我甚至不需要分析计数器,但是依赖于对IIS日志的解析。为什么要记录已经记录的数据?如果你真的关心谁在重新查看完全缓存的页面(而不是服务器缓存的页面),那么你可以使用分析计数器技巧,或者使用像谷歌分析(google analytics)这样的服务(如果可以的话,你为什么要忍受打开会话带来的性能问题?)。
      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
      }