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


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

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

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

Можно кэшировать несколько версий возвращаемой страницы на основании параметров, отправленных в виде значений строк запроса или значений формы разноски.

y96218s9.alert_note(ru-ru,VS.90).gifПримечание.

При кэшировании ASP.NET определяет значения строки запроса или значения формы разноски с одинаковыми парами ключ-значение как идентичные независимо от порядка передачи параметров. Однако при кэшировании учитывается регистр имен параметров, поэтому ASP.NET кэширует разные версии страницы для имен параметров и значений в верхнем и нижнем регистре.

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

  1. На странице ASP.NET включите в директиву @ OutputCache атрибут Duration. Атрибут Duration является обязательным, а его значение должно быть целым числом больше нуля.

  2. Включите в директиву @ OutputCache атрибут VaryByParam и задайте в качестве его значения имя строки запроса или параметр формы разноски, по которым требуется изменять страницу.

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

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

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

    <%@ OutputCache Duration="60" VaryByParam="City;ZipCode" %>
    

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

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

  2. Укажите имена параметров в качестве аргумента для свойства VaryByParams объекта Response и присвойте свойству значение true.

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

    Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0));
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetValidUntilExpires(true);
    Response.Cache.VaryByParams["Zip"] = true;
    
    Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0))
    Response.Cache.SetCacheability(HttpCacheability.Public)
    Response.Cache.SetValidUntilExpires(True)
    Response.Cache.VaryByParams("Zip") = True
    
    y96218s9.alert_note(ru-ru,VS.90).gifПримечание.

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

    Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0));
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetValidUntilExpires(true);
    Response.Cache.VaryByParams["City"] = true;
    Response.Cache.VaryByParams["Zip"] = true;
    

См. также

Задачи

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

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

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

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

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

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

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

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

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