string browserName;
browserName = Context.Request.Browser.Browser;
browserName += Context.Request.Browser.MajorVersion.ToString();
//Указать, что эта строка должна применяться для идентификации кэша.
return browserName;
)
else
{
base.GetVaryByCustomString(context, arg)
}
}
Функция GetVaryByCustomString() получает имя VaryByCustom в параметре arg. Это позволяет вам создавать приложение, которое реализует несколько типов настраиваемого кэширования в одной и той же функции. Каждый отдельный тип должен использовать отличающееся имя VaryByCustom (такое как Browser, BrowserVersion или DayOfWeek). Ваша функция GetVaryByCustomString() должна проверить имя VaryByCustom и вернуть соответствующую кэш-строку. Если кэш-строки для разных запросов совпадают, ASP.NET использует кэшированную копию страницы. Или, если посмотреть с другой стороны, ASP.NET будет создавать и сохранять в кэше отдельные кэшированные версии страницы для каждой кэш-строки, которую он встретит.
Интересно, что базовая реализация GetVaryByCustomString() уже включает логику ориентированного на браузер кэширования. Это значит, что вам не нужно кодировать метод, показанный выше. Базовая реализация GetVaryByCustomString() создает кэш-строки на основе имени браузера и главного номера версии. Если вы хотите изменить эту логику работы (например, чтобы выбор кэша зависел от имени, старшего и младшего номеров версии), то для этого нужно переписать метод GetVaryByCustomString(), как в приведенном примере.
На заметку! Варьирование кэша в соответствие с браузером - важная техника кэшированных страниц, использующих специфичные для браузеров средства. Например, если ваша страница генерирует JavaScript-код клиентской стороны, который поддерживается не всеми браузерами, вы должны установить зависимость кэша от версии браузера. Конечно, идентификация браузера и выбор варианта JavaScript-кода остается на совести вашего кода. Подробнее об адаптируемых страницах и JavaScript можно прочесть в пятой части книги.
Директива OutputCache также включает третий атрибут, который вы можете использовать для определения кэширования. Этот атрибут — VaryByHeader — позволяет сохранять отдельные версии страницы на базе значения заголовка HTTP, полученного с запросом. Можно специфицировать один заголовок, или целый список заголовков, разделенных точками с запятой. Эту технику можно применять на многоязычных сайтах, чтобы кэшировать разные версии страницы на основе языка клиентского браузера, как показано ниже:
<%@ OutputCache Duration="20" VaryByParam="None"
VaryByHeader="Accept-Language" %>
предыдущая следующая страница вначало главы оглавление
488