@ OutputCache
Декларативно управляет политиками кэширования выходного потока страницы ASP.NET или находящегося на странице пользовательского элемента управления. Дополнительные сведения об использовании кэширования выходных данных см. в разделе Кэширование в ASP.NET.
<%@ OutputCache Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None |
ServerAndClient "
Shared="True | False"
VaryByControl="controlname"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parametername"
VaryByContentEncoding="encodings"
CacheProfile="cache profile name | ''"
NoStore="true | false"
SqlDependency="database/table name pair | CommandNotification"
ProviderName="Provider Name"
%>
Атрибуты
Duration
Время кэширования страницы или пользовательского элемента управления (в секундах). Установка этого атрибута на странице или в пользовательском элементе управления создает срок действия для ответных HTTP-сообщений объекта и автоматически кэширует выходной поток страницы или пользовательского элемента управления.Примечание Это обязательный атрибут.Если он не будет указан, то произойдет ошибка анализатора.
Location
Одно из значений перечисления OutputCacheLocation. По умолчанию используется значение Any.Примечание Этот атрибут не поддерживается для директив @ OutputCache, включенных в пользовательские элементы управления (ASCX-файлы).
CacheProfile
Имя набора параметров кэширования для страницы. Это необязательный атрибут. Значение этого атрибута по умолчанию — пустая строка ("").Примечание Этот атрибут не поддерживается для директив @ OutputCache, включенных в пользовательские элементы управления (ASCX-файлы).Это значение (если оно указано на странице) должно соответствовать имени одной из доступных записей элемента outputCacheProfiles в разделе outputCacheSettings .Если это имя не соответствует элементу профиля, вызывается исключение.
NoStore
Логическое значение, определяющее, следует ли запретить хранение конфиденциальных данных на дополнительных накопителях.Примечание Этот атрибут не поддерживается для директив @ OutputCache, включенных в пользовательские элементы управления (ASCX-файлы).Значение true этого атрибута эквивалентно выполнению во время запроса приведенного ниже кода:
Response.Cache.SetNoStore();
ProviderName
Строковое значение, определяющее пользовательский поставщик кэша вывода для использования. Дополнительные сведения см. в подразделе Заметки данного раздела и в записи Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET 4.0 Series) в блоге Скотта Гатри (Scott Guthrie).Примечание Этот атрибут поддерживается только в пользовательских элементах управления (ASCS-файлах).Этот атрибут не поддерживается для директив @ OutputCache, включенных в страницы ASP.NET (ASPX-файлы).
Shared
Логическое значение, определяющее, может ли выходной поток пользовательского элемента управления совместно использоваться несколькими страницами. Значение по умолчанию: false. Дополнительные сведения см. в разделе "Заметки".Примечание Этот атрибут не поддерживается для директив @ OutputCache, включенных в страницы ASP.NET (ASPX-файлы).
SqlDependency
Строковое значение, содержащее список пар имен баз данных и таблиц, от содержимого которых зависит кэш вывода страницы или элемента управления. Обратите внимание, что класс SqlCacheDependency проверяет таблицу в базе данных, от которой зависит кэш вывода. Таким образом, когда обновляются элементы таблицы, они удаляются из кэша при табличном опросе. При использовании уведомлений (в Microsoft SQL Server 2005) со значением CommandNotification, в конечном счете, используется класс SqlDependency для регистрации уведомлений о запросах на сервере SQL Server 2005.Примечание Значение CommandNotification атрибута SqlDependency допустимо только на веб-страницах (ASPX).Пользовательские элементы управления могут использовать табличный опрос только с помощью директивы @ OutputCache .
VaryByCustom
Произвольный текст, представляющий пользовательские требования по кэшированию выходного потока. Если атрибут имеет значение browser, значения в кэше изменяются в зависимости от обозревателя и основных сведений о версии. Если введена специализированная строка, необходимо переопределить метод GetVaryByCustomString в файле Global.asax приложения.VaryByHeader
Разделяемый точками с запятой список HTTP-заголовков, используемых для изменения кэша выходного потока. Если в качестве значения этого атрибута задано несколько заголовков, то кэш выходного потока содержит различные версии запрашиваемого документа для каждой комбинации указанных заголовков.Примечание Значение атрибута VaryByHeader включает кэширующие элементы во всех кэшах HTTP версии 1.1, а не только кэш ASP.NET.Этот атрибут не поддерживается в директивах @ OutputCache в пользовательских элементах управления.
VaryByParam
Разделяемый точками с запятой список строк, используемых для изменения кэша выходного потока. По умолчанию эти строки соответствуют значению строки запроса, отправленному с атрибутами метода GET, или параметру, отправленному при помощи метода POST. Если в качестве значения этого атрибута задано несколько параметров, то кэш выходного потока содержит различные версии запрашиваемого документа для каждой комбинации указанных параметров. Возможными значениями являются none, звездочка (*) и любая допустимая строка запроса или имя параметра POST.Внимание Этот атрибут или атрибут VaryByControl обязателен, если используется директива @ OutputCache на страницах ASP.NET и в пользовательских элементах управления.В случае его отсутствия произойдет ошибка анализатора.Если для изменения кэшированного содержимого указывать параметр нежелательно, следует указать значение none.Если кэш выходных данных должен зависеть от значений всех параметров запроса, установите в качестве значения атрибута звездочку (*).
VaryByControl
Разделяемый точками с запятой список строк, используемых для изменения кэша выходного потока пользовательского элемента управления. Эти строки представляют значения свойства ID серверных элементов управления ASP.NET, объявленных в пользовательском элементе управления. Дополнительные сведения см. в разделе Кэширование частей страницы ASP.NET.Примечание Этот атрибут или атрибут VaryByParam обязателен, если используется директива @ OutputCache на страницах ASP.NET и в пользовательских элементах управления.
VaryByContentEncodings
Разделяемый точками с запятой список строк, используемых для изменения кэша выходного потока. Атрибут VaryByContentEncodings используется с заголовком Accept-Encoding для определения того, как кэшированные ответы обслуживаются различными кодировками содержимого. Дополнительные сведения о том, как указывать заголовок Accept-Encoding см. в разделе 14.3 спецификации, находящейся на веб-узле W3C Hypertext Transfer Protocol -- HTTP/1.1 .
Заметки
Настройка значений кэша выходного потока страницы идентична управлению методом SetExpires и SetCacheability с помощью свойства Cache .
Если для просмотра пользователем страницы Web Forms требуется авторизация, выходной кэш устанавливает значение private для заголовка HTTP Cache-Control . Сведения о всех этих темах см. в разделе Кэширование страниц ASP.NET.
Если атрибут Shared имеет значение true, выходной поток пользовательского элемента управления может быть доступен для нескольких страниц Web Forms. Если свойству не задано значение true, по умолчанию кэшируется отдельная версия выходных данных пользовательского элемента управления для каждой страницы, содержащей этот пользовательский элемент управления. Установка атрибута Shared может потенциально сэкономить значительный объем памяти. Дополнительные сведения см. в разделе Кэширование частей страницы ASP.NET.
Пример
В следующем примере кода демонстрируется, как указывать продолжительность кэширования выходного потока страницы или пользовательского элемента управления.
<%@ OutputCache Duration="100" VaryByParam="none" %>
В следующем примере кода демонстрируется, как устанавливать кэширование выходного потока страницы или пользовательского элемента управления на основе параметров формы count или location, извлекаемых из метода формы POST или из строки запроса. Каждый HTTP-запрос с новым значением параметра location или count (или с новым значением обоих параметров) кэшируется на протяжении 10 секунд. Результат любых последующих запросов с теми же значениями параметров будет извлекаться из кэша, пока не истечет срок действия записи.
<%@ OutputCache Duration="10" VaryByParam="location;count" %>
См. также
Ссылки
Синтаксис директивы текстового шаблона
Основные понятия
Общие сведения о кэшировании в ASP.NET