如何在ASP.Net页面上仅为一个UserControl禁用OutputCache?

时间:2011-02-03 19:08:38

标签: asp.net caching outputcache

我在ASP.NET页面上使用OutputCache。我在Page_Load:

中以编程方式设置它
Response.AddFileDependency(cachefilepath);
Response.Cache.SetExpires(DateTime.Now.AddHours(12));
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetValidUntilExpires(true);
Response.Cache.SetSlidingExpiration(false);
Response.Cache.VaryByParams["*"] = true;

现在页面将被缓存,这样可以正常工作。但我在页面上有一个不应缓存的UserControl。是否可以为此UserControl禁用缓存,尽管整个页面正在缓存?

原因是这个UserControl的输出有两种状态,因此根据他的行为,每个客户端的输出可能不同......

1 个答案:

答案 0 :(得分:2)

Response.Cache是​​每个网页,您必须根据用户控件管理整个页面上的缓存,换句话说,当您的用户控件是动态的时,您将不得不使页面缓存失效,看起来像你的案例页面输出缓存无法正常工作

或者您可以添加VaryByControl并传递该控件,参考:http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx