Лично я использую атрибут VaryByCustom, чтобы дать зарегистрированным и вышедшим из системы пользователям различные просмотры кэшированных страниц:
<%@ OutputCache VaryByCustom="IsLoggedIn" Duration="30" VaryByParam="*" %>
тогда в global.asax ставишь
public override string GetVaryByCustomString(HttpContext context,
string arg)
{
if (arg == "IsLoggedIn")
{
if (context.Request.IsAuthenticated)
{
return "Logged in: " + context.User.Identity.Name;
}
else
{
return "Not Logged In";
}
}
else
{
return base.GetVaryByCustomString(context, arg);
}
}
Я просто собираюсь выбросить это туда. Как насчет контроля замещения?
http://msdn.microsoft.com/en-us/library/ms228212.aspx
По данным сайта MSDN:
Контроль замещения позволяет вам
создавать области на странице, которые могут быть
обновляется динамически, а затем
интегрированы в кэшированную страницу. ...
Контроль замещения предлагает
упрощенное решение для частичной страницы
кеширование страниц где большинство
содержимого кэшируется. Вы можете
выходной кеш всей страницы, а затем
используйте элементы управления Substitution для указания
части страницы, которые освобождены
из кеширования.
Я никогда не использовал элемент управления заменой лично, но я случайно нашел его на днях, и, похоже, он может каким-то образом вставить обновленный контент в вывод страницы, кэшированный в противном случае.