Практическое руководство. Кэширование версий страницы при помощи запрашивающего обозревателя

Visual Studio 2010

Обновлен: Ноябрь 2007

Если веб-приложение содержит страницу, которая создает различные выходные данные на основе типа запрашивающего обозревателя, то можно кэшировать версии выходных данных страницы в зависимости от основного номера версии обозревателя, который запрашивает страницу. Так, например, при запросе страницы из обозревателя Internet Explorer 6 кэшируется одна версия страницы. При запросе страницы из обозревателя Netscape Navigator, другой версии Internet Explorer или любого другого обозревателя в кэш вывода будет добавлен другой вариант страницы.

77a0146y.alert_note(ru-ru,VS.100).gifПримечание.

Информация об основном номере версии и типе обозревателя передается в свойстве MajorVersion объекта HttpBrowserCapabilities в текущем запросе. Дополнительные сведения см. в разделе Практическое руководство. Определение типов обозревателей на веб-страницах ASP.NET.

Декларативное кэширование нескольких вариантов страницы в зависимости от типа обозревателя

  1. На странице ASP.NET следует использовать директиву @ OutputCache с необходимыми атрибутами Duration и VaryByParam или VaryByControl. Атрибут Duration должен иметь целое положительное значение. Если кэширование должно учитывать только тип обозревателя, то атрибуту VaryByParam следует присвоить значение «None».

  2. Включите в директиву @ OutputCache атрибут VaryByCustom и задайте для него значение «browser».

    В следующем примере страница будет кэшироваться на протяжении 10 секунд. Выходные данные будут меняться в зависимости от типа обозревателя.

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="browser" %>
    

Программное кэширование нескольких вариантов страницы в зависимости от типа обозревателя

  1. В коде страницы вызовите методы SetExpires и SetCacheability применительно к свойству Cache свойства Response страницы.

  2. Вызовите метод SetVaryByCustom, передавая значение «browser» в параметре custom.

    В следующем примере кода показано кэширование нескольких вариантов страницы на протяжении одной минуты. Выходные данные будут меняться в зависимости от типа обозревателя, пославшего запрос.

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d));
        Response.Cache.SetCacheability(HttpCacheability.Public);
        Response.Cache.SetValidUntilExpires(true);
        Response.Cache.SetVaryByCustom("browser");
    }
    

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0))
        Response.Cache.SetCacheability(HttpCacheability.Public)
        Response.Cache.SetValidUntilExpires(True)
        Response.Cache.SetVaryByCustom("browser")
    End Sub
    

Показ: