Если вы используете pyenv, вы можете удалить вашу виртуальную среду:
$ pyenv virtualenv-delete <name>
Вместо того, чтобы использовать директиву OutputCache, вы можете сделать то же самое программное обеспечение, следующим образом:
if (yourArbitraryCondition) {
OutputCacheParameters outputCacheSettings = new OutputCacheParameters();
outputCacheSettings.Duration = 60;
InitOutputCache(outputCacheSettings);
}
Делать это от Oninit, должно работать нормально. И, очевидно, вы можете настроить поведение кэширования, установив различные свойства на выводе, который имеет все те же регуляторы, что и директива (на самом деле, вот что мы генерируем при использовании Директивы).
Основная точка заключается в том, что вы выполняете только эту логику условно, в то время как Директива делает его безусловным.
Обновление:
в качестве альтернативы, вы можете использовать API кэш-памяти низкого уровня, включенный выше код. например
HttpCachePolicy cache = Response.Cache;
cache.SetCacheability(HttpCacheability.Public);
cache.SetExpires(Context.Timestamp.AddSeconds(60));
cache.VaryByParams["categoryName"] = true;
В принципе, это еще один способ сделать то же самое, без использования мерзких API, как «не следует называться». В конце концов, в любом случае будет работать, поэтому возьмите ваш выбор.
Я думаю, вы сможете использовать директиву OutputCache со свойством VaryByParam, установленным на список строк, разделенных точкой с запятой, используемых для изменения кэша вывода.
Если вы не хотели просто кэшировать только , когда Page == 1?
редактирование: Мне нравится ответ Дэвида Эббо намного больше, чем мой собственный.
Вы можете использовать
<%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="pageOne" %>
и реализовать его таким образом, чтобы возвращать фиксированную клавишу для первой страницы и случайную клавишу для всех остальных страниц. Вы можете (и should) позволить механизму scavenging позаботиться о памяти, но вы можете использовать HttpResponse.RemoveOutputCacheItem
для удаления элементов кэша, если нужно.
public override string GetVaryByCustomString(HttpContext ctx, string custom)
{
if(custom == "pageOne")
{
if(ctx.Request["page"] == "1")
{
return "1";
}
HttpResponse.RemoveOutputCacheItem("/Default.aspx");
return Guid.NewGuid().ToString();
}
return base.GetVaryByCustomString(ctx, custom);
}