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

Hosted by uCoz