Пошаговое руководство. Использование кэширования выходных данных ASP.NET с SQL Server
Обновлен: Ноябрь 2007
В данном пошаговом руководстве демонстрируются способы кэширования страниц ASP.NET, зависящих от сведений базы данных SQL Server.
Дополнительной возможностью кэширования выходных данных ASP.NET является зависимость кэша SQL. Зависимость кэша SQL позволяет кэшировать страницы, зависящие от данных из таблиц SQL Server. Можно настроить SQL Server и ASP.NET для кэширования запросов страниц, уменьшая нагрузку на сервер, пока данные, от которых зависят страницы, не обновились в SQL Server. Зависимость кэша SQL полезна для таких данных, как каталоги продуктов или сведения о регистрации пользователей, которые являются сравнительно статичными.
В этом пошаговом руководстве рассматриваются следующие задачи:
создание и настройка страницы для отображения данных из учебной базы данных «Борей»;
включение базы данных для уведомления кэша SQL;
задание зависимости кэша SQL на странице и в файле Web.config;
внесение изменений в учебную базу данных «Борей» и просмотр поведения кэширования.
Обязательные компоненты
Для выполнения этого пошагового руководства потребуется следующее:
Доступ к SQL Server 2000 или SQL Server 2005 с учебной базой данных «Борей».
Доступ к учебной базе данных «Борей» на SQL Server. Сведения о загрузке и установке образца учебной базы данных «Борей» на SQL Server см. в документе Установка образцов баз данных на веб-узле Microsoft SQL Server.
Примечание. Сведения о входе в систему SQL Server можно получить у администратора сервера.
Компоненты доступа к данным MDAC 2.7 или более поздней версии.
При использовании Windows XP или Windows Server 2003 в наличии уже есть MDAC 2.7. Однако при использовании Windows 2000 может потребоваться обновить на компьютере уже установленный MDAC. Дополнительные сведения см. в статье MSDN Установка MDAC.
.NET Framework версии 2.0.
Создание веб-узла
Если веб-узел уже создан в Visual Web Developer (см. Пошаговое руководство. Создание базовой веб-страницы в Visual Web Developer), можно использовать этот веб-узел и перейти к подразделу «Включение уведомления кэша для SQL Server» ниже в этом пошаговом руководстве. В противном случае создайте новый веб-узел и страницу с помощью следующей процедуры.
Создание веб-узла на базе файловой системы
Откройте Visual Web Developer.
В меню Файл выберите СоздатьВеб-узел. (В Visual Web Developer, экспресс-выпуск в меню Файл выберите Создать, а затем выберите пункт Веб-узел.)
Откроется диалоговое окно Создать веб-узел.
В группе Установленные шаблоны Visual Studio выберите пункт Веб-узел ASP.NET.
В поле Расположение введите имя папки, где следует хранить страницы веб-узла.
Например, введите имя папки «C:\WebSites».
В списке Язык выберите предпочтительный язык программирования.
Нажмите кнопку ОК.
С помощью Visual Web Developer создается папка и новая страница с именем Default.aspx.
Включение уведомления кэша для SQL Server
Необходимо настроить SQL Server, чтобы обеспечить соответствующее уведомление для ASP.NET об изменениях в зависимых данных. Для настройки сервера необходимо обладать правами администратора.
Включение уведомления кэша для SQL Server
В меню Пуск выберите команду Все программы, укажите Стандартные, затем — Командная строка, чтобы открыть окно командной строки.
Найдите на диске исполняемый файл Aspnet_regsql.exe. Этот файл установлен с помощью платформы .NET Framework версии 2.0 в следующем месте:
%windir%\Microsoft.NET\Framework\FrameworkVersion
Убедитесь, что %windir% представляет каталог Windows и что версия платформы .NET Framework 2.0 или более поздняя. Путь может выглядеть следующим образом:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217
Для включения уведомления кэша для таблицы Employees в учебной базе данных «Борей» используйте следующую команду:
aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
Примечание. Понадобятся права администратора или учетная запись и пароль администратора. При отсутствии такой информации свяжитесь с администратором базы данных.
Появится сообщение, отражающее успешное включение или сбой включения базы данных. Сообщение успешного включения:
Enabling the table for SQL cache dependency. .. Finished.
Добавление данных подключения к проекту
Для работы с базой данных SQL Server в Visual Web Developer необходимо добавить подключение к учебной базе данных «Борей».
Добавление источника данных к проекту
В Обозревателе серверов (Обозреватель баз данных в Visual Web Developer, экспресс-выпуск) щелкните правой кнопкой мыши Подключения данных, а затем выберите команду Добавить подключение.
Примечание. Обозреватель серверов (Обозреватель баз данных в Visual Web Developer, экспресс-выпуск) обычно прикрепляется позади обозревателя решений.
Если Обозреватель серверов (Обозреватель баз данных в Visual Web Developer, экспресс-выпуск) не отображается, в меню Вид выберите Обозреватель серверов (Обозреватель баз данных в Visual Web Developer, экспресс-выпуск).
При отображении диалогового окна Выбор источника данных необходимо выполнить следующее:
В списке Источник данных выберите Microsoft SQL Server.
В списке Поставщик данных выберите Поставщик данных .NET Framework для SQL Server.
Нажмите кнопку Продолжить.
В диалоговом окне Добавить подключение предоставьте сведения для базы данных (имя сервера, учетные данные для входа и т. д.), а затем выберите учебную базу данных «Борей».
Нажмите кнопку ОК.
Добавление отметки времени и данных на веб-страницу
Теперь можно создать веб-страницу для демонстрации кэширования. В этом разделе будут добавлены отметки времени, чтобы проследить моменты создания страницы, и элемент управления GridView для просмотра таблицы Employees учебной базы данных «Борей».
Добавление отметки времени и данных на веб-страницу
Переключитесь на страницу Default.aspx или откройте ее.
Перейдите в представление конструктора.
Из группы Стандартная в панели элементов перетащите на страницу элемент управления Label, оставив имя по умолчанию Label1.
В Обозревателе серверов (Обозреватель баз данных в Visual Web Developer, экспресс-выпуск) разверните узел Подключения данных.
Разверните созданный ранее узел для данных подключения.
Разверните узел Таблицы.
Перетащите на страницу таблицу Employees.
В Visual Web Designer создается элемент управления GridView, который настраивается для использования выбранных подключения и таблицы.
В меню Задачи GridView выберите команду Настройка источника данных.
Имя по умолчанию строки подключения данных NorthwindConnectionString1 появляется на первом шаге мастера настройки источника данных.
Нажмите кнопку Далее.
В панели Настройка оператора Select выберите Указать столбцы из таблицы или представления.
В списке Имя выберите Employees.
В списке Столбцы выберите столбцы EmployeeID, LastName и FirstName.
Нажмите кнопку Далее.
Нажмите кнопку Готово.
С помощью Visual Web Designer настраивается элемент управления GridView для отображения выбранных данных.
Примечание. При появлении сообщения с запросом на обновление полей и ключей для элемента управления GridView нажмите кнопку Да.
Дважды щелкните на пустой части страницы.
Конструктором будут созданы метод Page_Load и представления переключателей.
Добавьте нижеследующий выделенный код для отображения отметки времени, указывающей время создания страницы:
Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Me.Load Label1.Text = System.DateTime.Now End Sub
protected void Page_Load(Object sender, System.EventArgs e) { Label1.Text = System.DateTime.Now.ToString(); }
Сохраните файл.
Тестирование страницы без кэширования
Теперь можно запустить страницу и увидеть ее поведение без кэширования. Загружается страница, отображается текущее серверное время, а затем извлекаются данные и помещаются на страницу.
Тестирование страницы без кэширования
Нажмите клавиши CTRL+F5 для запуска страницы.
Обновите страницу в веб-обозревателе.
Имейте в виду, что отметка времени изменяется с каждым обновлением страницы. Данные остаются неизменны.
Настройка веб-страницы для кэширования
В этой части пошагового руководства описывается настройка страницы для зависимости кэша SQL, основанной на таблице Employees учебной базы данных «Борей».
Настройка кэширования веб-страницы
Перейдите в представление исходного кода.
Для обозначения зависимости добавьте вверху страницы следующую директиву:
<%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>
Атрибут VaryByParam показывает, следует ли учитывать ASP.NET параметры страницы (такие как строка запроса или отправленные значения) при кэшировании. Если VaryByParam имеет значение none, никакие параметры не учитываются; все пользователи отсылаются на одну и ту же страницу независимо от того, какие дополнительные параметры предоставляются. Задание VaryByParam значения * (звездочка) означает, что для каждой уникальной комбинации параметров запроса будет кэшироваться уникальная страница. Однако задание VaryByParam значения * может привести к появлению множества различных версий страницы, которые необходимо кэшировать, поэтому если известны параметры, с помощью которых можно изменять кэширование, рекомендуется явно указывать их в атрибуте VaryByParam. Дополнительные сведения см. в разделе Кэширование нескольких версий страницы.
Задание конфигурации кэширования в файле Web.config
Дополнительно к объявлению OutputCache на веб-странице в предыдущем разделе необходимо указать подробности кэширования в файле Web.config.
Создание и обновление файла Web.config
Если веб-узел уже содержит файл Web.config, переходите к шагу 4.
В обозревателе решений щелкните правой кнопкой мыши имя веб-узла, затем нажмите кнопку Добавить новый элемент.
В диалоговом окне Добавить элемент выберите Файл веб-конфигурации и нажмите кнопку Добавить.
Проверьте, что файл носит имя Web.config.
Добавьте следующий XML в файл Web.config в качестве дочернего элемента system.web:
<!-- caching section group --> <caching> <sqlCacheDependency enabled = "true" pollTime = "1000" > <databases> <add name="Northwind" connectionStringName="NorthwindConnectionString1" pollTime = "1000" /> </databases> </sqlCacheDependency> </caching>
Примечание. Имя строки подключения NorthwindConnectionString1 было задано ранее при создании подключения данных. Если строка подключения имеет другое имя, замените его.
Примечание. Учетные данные, указанные в строке подключения, должны обладать достаточными правами для опроса базы данных.
Сохраните файл и закройте его.
Тестирование страницы с кэшированием
С включенным кэшированием обновление страницы больше не вызовет обновления отметки времени или запроса базы данных, потому что ASP.NET выполнит запрос страницы из кэша.
Тестирование страницы с кэшированием
Нажмите клавиши CTRL+F5 для запуска страницы.
Имейте в виду, что отметка времени остается неизменной с каждым обновлением страницы. Страница извлекается из кэша.
Изменение данных
Теперь можно изменять данные в базе данных и видеть, что кэш аннулируется и создается новая страница.
Изменение данных
В Обозревателе сервера (Обозреватель данных в Visual Web Developer, экспресс-выпуск) разверните узел Подключения данных.
Разверните созданное ранее подключение.
Разверните узел Таблицы.
Щелкните правой кнопкой мыши Employees, а затем выберите Показать таблицу данных.
Обновите базу данных, отредактировав любое поле в таблице данных, и убедитесь, что это поле отображается веб-страницей.
Также можно использовать панель SQL (если панель SQL не отображается, в меню Конструктора запросов выберите Панель, а затем — SQL). Введите команду SQL непосредственно, а затем нажмите кнопку «Выполнить SQL» в панели инструментов Конструктор запросов. Например, запустите следующую команду:
UPDATE dbo.Employees SET LastName = 'Doe' WHERE (EmployeeID = 5)
С ее помощью имя сотрудника 5 меняется на «Doe».
Закройте представление данных.
Тестирование зависимости кэша SQL
Теперь можно протестировать страницу, чтобы увидеть, изменились ли данные и отметка времени.
Тестирование зависимости кэша SQL
Нажмите клавиши CTRL+F5 для запуска страницы.
Имейте в виду, что отметка времени изменилась и отображаются новые данные.
Нажмите клавиши CTRL+F5 для повторного запуска страницы.
На этот раз отметка времени останется неизменной, потому что данные не изменились, а сама страница снова извлекается из кэша.
Следующие действия
Кэшировать страницы можно также с помощью других параметров. Дополнительные сведения см. в разделе Пошаговое руководство. Использование кэширования выходных данных для улучшения производительности веб-узла. Сведения о доступе к данным см. в разделе Пошаговое руководство. Основы доступа к данным на веб-страницах.
См. также
Основные понятия
Кэширование в ASP.NET с помощью класса SqlCacheDependency