ASP.NET缓存等奇怪问题-------
用了缓存后:有时候缓存有时候不缓存(频率20%),有的时候点击按钮关刷新页面不执行程序(50%)
把缓存删掉一切正常
在用户控件中添加
<%@ OutputCache Duration= "100000 " VaryByParam= "page;category " %>
<asp:DataList.... />
this.CachePolicy.Dependency = DependencyFacade.GetRecommendation();
//GetRecommendation()代码大致如下
System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications(ConfigurationManager.ConnectionStrings[ "SQLConnString1 "].ConnectionString);
foreach (string tablename in tables)
{
SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings[ "SQLConnString1 "].ConnectionString, tablename);
dependency.Add(new SqlCacheDependency(dbName, tablename));
}
------解决方案--------------------你所需要执行的必须是控件事件,这样才可能在POST时触发。如果你执行的是Page_Load中一些根据QueryString之类的判断的代码,那么使用缓存并且GET时就什么也不执行。
------解决方案--------------------VaryByParam 属性基于使用 POST 或 GET 发送的名称/值对改变缓存结果
------解决方案--------------------除了页面缓存是否可以用其它试一下
http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/ASP.NETCaching-TechniquesandBestPractiCEs.mspx?mfr=true
------解决方案-------------------- <%@ OutputCache Duration= "100000 " VaryByParam= "none " VaryByControl= "Category " %>
如果用户控件包含名为“Category”的下拉选择框控件,用户控件的输出将基于在该控件中选择的值改变。
------解决方案--------------------访问页面的时候带上参数:
.aspx?page=0&category=1