Поделиться через


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

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

ASP.NET позволяет кэшировать несколько версий страницы в зависимости от указанного значения для заголовка HTTP. Можно указать кэширование по одному заголовку, нескольким заголовкам или всем заголовкам, передаваемым в приложение при запросе страницы.

Декларативное кэширование нескольких вариантов страницы на основе значений заголовков HTTP

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

  2. Включите в тело директивы @ OutputCache атрибут VaryByHeader и задайте в качестве его значения имя заголовка HTTP, в соответствии с которым должно варьироваться кэшируемое содержимое.

    В следующем примере выполняется кэширование страницы на 60 секунд, а вариант кэшируемой страницы определяется на основе заголовка HTTP Accept-Language.

    <%@ OutputCache Duration="60" VaryByParam="None" VaryByHeader="Accept-Language" %>
    
    a6s4ks5w.alert_note(ru-ru,VS.90).gifПримечание.

    Если кэшируемое содержимое должно варьироваться на основе значений нескольких заголовков, их имена следует указывать в виде списка, разделенного точками с запятой (;). Если кэшируемое содержимое должно варьироваться на основе значений всех заголовков, установите в качестве значения атрибута VaryByHeader звездочку (*).

Программное кэширование нескольких вариантов страницы на основе значений заголовков HTTP

  1. В методе Page_Load страницы вызовите методы SetCacheability и SetExpires для свойства Cache объекта Response страницы.

  2. В свойстве VaryByHeaders задайте для заголовка HTTP значение true.

    В следующем примере кода показан способ кэширования нескольких вариантов страницы на одну минуту по запросам с разными значениями заголовка HTTP Accept-Language:

    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.VaryByHeaders["Accept-Language"] = true;
    }
    
    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.VaryByHeaders("Accept-Language") = true
    End Sub
    
    a6s4ks5w.alert_note(ru-ru,VS.90).gifПримечание.

    Если требуется варьировать кэшируемое содержимое на основе нескольких заголовков, необходимо задать несколько значений в свойстве VaryByHeaders. Если необходимо варьировать его на основе всех заголовков, задайте для свойства VaryByHeadersVaryByUnspecifiedParameters»] значение true.

См. также

Задачи

Практическое руководство. Декларативное задание возможности кэширования страницы ASP.NET

Практическое руководство. Задание возможности кэширования страницы программными средствами

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

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

Практическое руководство. Кэширование версий страницы на основании пользовательских строк

Основные понятия

Кэширование страниц ASP.NET

Задание возможности кэширования страницы

Кэширование нескольких версий страницы