У меня проблема с использованием outputcache вместе с urlrewriting. У нас есть приложение, которое переписывает URL (IE http://localhost/about/) в "~ / page.aspx". На основании URL (/ about /) мы выясняем, какой контент показывать.
Теперь мы пытаемся добавить кэш вывода на эту страницу:
< %@ outputcache duration="600" location="Server" varybyparam="Custom" varybycustom="RawURL" %>
И в Global.asax мы переопределяем GetVaryByCustomString, как показано ниже:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "RawUrl")
{
return context.Request.RawUrl;
}
else
{
return string.Empty;
}
}
Однако, когда мы публикуем страницу, я хотел бы сделать кэш недействительным, чтобы редакторы увидели изменение напрямую. Но независимо от того, что я пытаюсь, я не могу сделать недействительным кеш. Если я хочу сделать недействительным "/ about /", я хотел бы сделать это:
HttpResponse.RemoveOutputCacheItem("/about/");
К сожалению, это не работает. Единственное, что, кажется, работает:
HttpResponse.RemoveOutputCacheItem("/page.aspx");
Это очищает кеш для всех моих страниц, а не только "/about/".
Есть ли способ аннулировать кэш на основе URL? Или мы должны предоставить ключ кэша или что-то на страницу, чтобы иметь возможность программно аннулировать кэш?
Заранее спасибо!