Динамическое обновление части кэшированной страницы
Обновлен: Ноябрь 2007
Кэширование страницы может значительно увеличить производительность веб-приложений. Однако в некоторых случаях необходимо кэшировать большую часть страницы, оставляя некоторые фрагменты страницы динамическими. Например, при создании страницы новостей, которая является полностью статической в течение установленных промежутков времени, можно задать кэширование всей страницы. Если необходимо включить чередующееся рекламное объявление, которое изменяется при каждом запросе страницы, то часть страницы, содержащая рекламное объявление, должна быть динамической.
Чтобы позволить кэшировать страницу, но заменять часть содержимого динамически, можно использовать подстановку после кэширования ASP.NET. С помощью такой подстановки кэшируется вся страница, но отдельные ее части помечаются как исключенные из кэширования. В примере с рекламными объявлениями элемент управления AdRotator позволяет воспользоваться преимуществами подстановки после кэширования таким образом, чтобы рекламные объявления динамически создавались для каждого пользователя и для каждого обновления страницы.
Существует три способа реализации подстановки после кэширования:
декларативная реализация с помощью элемента управления Substitution;
программная реализация с помощью элемента управления Substitution API;
неявная реализация с помощью элемента управления AdRotator.
Элемент управления Substitution
Элемент управления ASP.NET Substitution указывает раздел кэшированной страницы, который будет создан динамически, а не из кэша. Элемент управления Substitution помещается в расположение отображения динамического содержимого.
Во время выполнения элемент управления Substitution вызывает метод, указанный в свойстве MethodName. Этот метод должен вернуть строку, которая заменит содержимое элемента управления Substitution. Метод должен быть статическим методом содержащего его элемента управления Page или UserControl.
С помощью элемента управления подстановки происходит замена кэшируемости на стороне клиента на серверную кэшируемость, так что страница не будет кэширована на стороне клиента. Это гарантирует, что последующие запросы страницы будут опять вызывать этот метод для создания динамического содержимого.
Элемент управления Substitution API
Чтобы создать динамическое содержимое для кэшированных страниц программными средствами, можно вызвать метод WriteSubstitution в коде страницы, передав в него имя метода в качестве параметра. Метод, обрабатывающий создание динамического содержимого, принимает один параметр HttpContext и возвращает строку. Возвращаемая строка является содержимым, которое будет подставлено в указанное расположение. Преимуществом вызова метода WriteSubstitution вместо декларативного использования элемента управления Substitution является то, что можно вызвать метод любого произвольного объекта вместо вызова статического метода объекта Page или UserControl.
Вызов метода WriteSubstitution изменяет кэшируемость со стороны клиента на серверную кэшируемость, так что страница не будет кэширована на стороне клиента. Это гарантирует, что последующие запросы страницы будут опять вызывать этот метод для создания динамического содержимого.
Элемент управления AdRotator
Серверный элемент управления AdRotator реализует поддержку подстановки после кэширования изнутри. При наличии элемента управления AdRotator на странице он будет отображать уникальные рекламные объявления при каждом запросе, независимо от того, кэшируется ли родительская страница. В результате страница, содержащая элемент управления AdRotator, кэшируется только на стороне сервера.
См. также
Основные понятия
Общие сведения о кэшировании в ASP.NET
Кэширование нескольких версий страницы