我有一个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
}
答案 0 :(得分:2)
这不是一个错误,而是设计。如果页面位于缓存中并且“缓存的输出仍然有效”,则不会重新处理该页面。您可以在此验证阶段运行代码,这可以帮助您执行计算访问次数并将其添加到cookie的任务。以下可能有所帮助:
答案 1 :(得分:2)
这一点有什么意义?营销信息?使用脚本中的轻量级分析计数器或页面中的图像,而不是混合使用生成页面本身。问题在于,您正在为繁忙的请求添加额外的工作,而不是为额外的工作提供自己的请求。