Условно добавить директиву OutputCache - PullRequest
1 голос
/ 26 октября 2011

Я использую директиву OutputCache на своих страницах aspx.Я хотел бы добавить или удалить его в зависимости от окружающей среды.Например, имейте директиву для производства, но не для сред разработки.

Оператор if на странице не работает:

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

Есть ли способ удалить (илидобавить) директива в коде позади?Какой лучший способ сделать это?

1 Ответ

1 голос
/ 26 октября 2011

Каждый атрибут OutputCache может обрабатываться программно, как показано здесь: Как кэшировать в ASP.NET с помощью Visual C # .NET

Есть ли способ удалить (илидобавить) директива в коде позади?

Не то, что я видел до сих пор, но не исключаю возможность.Тем не менее вам не придется этого делать, поскольку в вашем распоряжении есть Response.Cache для вашего сценария, который дает вам целых десять ярдов для игры.

Хотя, если вы используете ASP.NET MVC, вы можете использовать его в качестве атрибутов, как показано здесь: OutputCacheAttribute Class ([OutputCache (CacheProfile = "MyProfile", Duration = 10)]).Здесь также есть пример переполнения стека здесь .

Какой наилучший способ сделать это?

Использование 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); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...