日期:2014-05-18  浏览次数:20486 次

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