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


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

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

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

Когда веб-сервер посылает ответ на запрос запрашивающему веб-обозревателю, сервер включает в HTTP-заголовок ответа поле Cache-Control, определяющее устройства, в которых страница может кэшироваться. В зависимости от потребностей приложения можно определить, какие устройства должны, а какие не должны кэшировать отдельные страницы ASP.NET. Например, можно сделать так, чтобы параметры кэширования страницы входа пользователя в систему отличались от параметров кэширования страницы, на которой отображается содержимое каталога продукции. В случае страницы входа в систему в целях обеспечения безопасности будет, вероятно, разумным выполнять кэширование только на сервере, в то время как страницу каталога можно, видимо, кэшировать на любом способном к кэшированию устройстве.

Для страниц ASP.NET можно задать параметры кэширования с помощью значений в перечислении HttpCacheability. Значения перечисления указаны ниже. Первые три сопоставляются непосредственно с параметром HTTP-заголовка Cache-Control, последние три — это особые значения.

  • NoCache:   указывает на то, что устройство, посылающее запрос, должно получать ответ от веб-сервера каждый раз.

  • Public:   позволяет кэшировать ответ по клиентам и в общих кэшах (прокси-серверы).

  • Private:   задает условие, при котором ответ может быть кэширован только на клиенте, и не может быть кэширован в общих кэшах (прокси-серверы).

  • Server:   задает кэширование ответа только на исходном сервере.

  • ServerAndNoCache:   применяет как значение Server, так и NoCache для указания того, что содержимое кэшируется на сервере, и всем остальным участникам явно запрещается кэшировать ответ.

  • ServerAndPrivate:   указывает на то, что ответ должен кэшироваться только на исходном сервере и запрашивающем клиенте; кэширование ответа прокси-серверами не разрешается.

Можно задать кэширование страниц принудительно, включив атрибут Location в директиву @ OutputCache и указав одно из значений перечисления OutputCacheLocation. Можно также задать кэширование страницы программными средствами с помощью метода SetCacheability, указывающего значение HttpCacheability для страницы. Метод доступен через свойство Cache класса Response.

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

Если используется директива @ OutputCache для установки кэширования страницы, то следует объявить атрибут Duration и либо атрибут VaryByControl, либо атрибут VaryByParam вместе с атрибутом Location. Для атрибута Duration должно быть установлено значение больше нуля. Можно задать для атрибута VaryByParam значение «None», если не требуется использовать функции параметров VaryByParam или VaryByControl. Дополнительные сведения см. в разделах Практическое руководство. Задание срока действия для кэширования страниц ASP.NET и Кэширование нескольких версий страницы.

В качестве альтернативы заданию параметров кэширования страницы с помощью директивы @ OutputCache можно создать профиль кэша в файле Web.config приложения и создать на странице ссылку на него. Дополнительные сведения см. в разделе Настройка кэша в ASP.NET.

См. также

Задачи

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

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

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

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

Ссылки

Duration