Рис. 11.1. Кэширование целой страницы

Код для этой страницы достаточно прост. Он устанавливает текущую дату и время в элемент управления Label при наступлении события Page.Load:

protected void Page_Load(object sender, EventArgs e)
{
  lblDate.Text = "The time is now:<br />";
  lblDate.Text += DateTime.Now.ToString();
}

Существуют два способа добавить страницу в выходной кэш. Наиболее распространенный подход заключается во вставке директивы OutputCache в начало файла .aspx, как показано ниже:

<%@ OutputCache Duration="20" VaryByParam="None" %>

В этом примере атрибут Duration инструктирует ASP.NET о том, что страницу нужно хранить в кэше в течение 20 секунд. Атрибут VaryByParam также необходим, но о нем мы поговорим в следующем разделе.

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

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

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

предыдущая    следующая страница    вначало главы    оглавление

484

Hosted by uCoz