有条件地添加OutputCache指令

时间:2011-10-26 13:12:32

标签: c# asp.net caching

我在我的aspx页面中使用OutputCache指令。我想根据环境添加或删除它。例如,有生产指令,但没有开发环境。

页面上的if语句似乎不起作用:

<% if (someCondition) { %>
  <%@ OutputCache Location="Any" Duration="1800" VaryByParam="None" %>
<% } %>

有没有办法在后面的代码中删除(或添加)指令?实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

可以通过编程方式处理每个OutputCache属性,如下所示:How to cache in ASP.NET by using Visual C# .NET

有没有办法在后面的代码中删除(或添加)指令?

到目前为止我并没有看到,但不排除可能性。尽管如此,你不必为你的场景提供 Response.Cache ,它可以让你整整十码。

虽然如果您使用的是ASP.NET MVC,那么您可以将其用作如下所示的属性: OutputCacheAttribute Class([OutputCache(CacheProfile =“MyProfile”,Duration = 10)])。 还有一个stackoverflow示例here

实现这一目标的最佳方式是什么?

使用 Response.Cache 。请检查以下代码。

using System.Web;

//......
//......
//......

if (someCondition) 
{
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public); //Location="Any"
HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.AddSeconds(1800)); //Duration="1800"
HttpContext.Current.Response.Cache.SetValidUntilExpires(true); 
}