Например, на веб-сайте есть пользовательский элемент управления Header.ascx. Каждая страница называет этот элемент управления «заголовком страницы». Этот пользовательский элемент управления можно напрямую кэшировать для отправки данных о производительности. Однако теперь этот пользовательский элемент управления Header.ascx должен отображать логин. имя пользователя, поэтому вы не можете напрямую использовать следующий метод кэширования:
<% @ OutputCache Duration = " 86400 " VaryByParam = " None " %>
В настоящее время вы можете использовать метод «кэширования страниц на основе пользовательских строк» следующим образом:
<%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="HeaderPageKey" %>
Затем переопределите метод GetVaryByCustomString в
общедоступной строке переопределения глобального класса GetVaryByCustomString (контекст HttpContext, пользовательская строка)
{
если(custom=="HeaderPageKey")
{
//Кэшируем элемент управления Header.ascx
если (context.Request.IsAuthenticated)
{
вернуть контекст.Пользователь.Идентификатор.Имя;
}
еще
{
вернуть «NoAuthenticated_User»;
}
}
вернуть base.GetVaryByCustomString (контекст, настраиваемый);
}
Если пользователь не вошел в систему, то одна версия будет кэшироваться. Если пользователь уже вошел в систему, то другая версия будет кэшироваться на основе имени входа. Ха-ха, для каждого пользователя кэшируется одна версия. решение.
Информацию о вышеуказанной технологии кэширования см. на странице http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconcachingversionsofpagebasedonparameters.asp.
Кроме того, также используется этот метод кэширования. в MSPetShop3.0 различные версии кэшируются в зависимости от Request.Querystring и того, вошли ли вы в систему. Однако этот кеш, похоже, не включен по умолчанию.
Источник: кака.нет