бы не создавать «дорогой» объект DataSet всякий раз, когда в нем возникает необходимость, поместите его в кэш при первом обращении:
Cache("Categones") = dsCategories Считать объект из кэша можно так:
= DataSet)
Заметьте, что метод Ctype приводит объект, извлекаемый из кэша, к типу DataSet до присвоения объектной переменной. Это связано с тем, что кэш возвращает объект универсального типа object. Объекты хранятся в кэше до перезапуска приложения или сброса кэша вручную. Полный пример кэширования обращения к базе данных приведен на рис. 10.
Если вы реализуете кэширование в компоненте, вам понадобится находить текущий экземпляр объекта Cache через объект HttpContext:
HtrpContфxt context = HttpContext.Currant;
После этого к кэшу можно обращаться командой context.Cadie|«Kyui>fpo-ванныйЭлемент» ].
Рис, 10. Кэширование DataSet

Пока что мы рассматривали простейшие способы использования объекта Cache. Добавляя новые элементы в кэш методом Insert объекта Cache, вы можете указывать зависимости и сроки жизни кэшируемых элементов. Допустим, меню хранится в XML-файле, расположенном в корневом каталоге Web-сайта, и кэшируется при первом обращении. Естественно, меню должно автоматически отражать изменения, внесенные в XML-файл. Метод Insert позволяет создать зависимость каптированного объекта от XML-файла. Тогда при изменении файла меню удаляется из кэша и снова помещается туда при следующем обращении. Чтобы поместить меню в кэш, вызывайте метод Insert объекта Cache так:
Cache.InsertC'nalnMenu", sXMLMenj, new
CacheDependency( "С; \Inetpub\wwroot\myCommerceSite\mainNeriu. xml"))
В первом аргументе указывается имя каптируемо™ элемента. Во втором — передается сам элемент. Последний аргумент имеет тип Cache Dependency и определяет местонахождение файла, от которого зависит к:шпфованш,ш элемент.
Кроме кэширования отдельных объектов, ASP.NET поддерживает кэширование вывода (output caching). Когда на странице разрешено кэширование вывода, никакой код не выполняется и обращение к диску не производится. Страница выводится из памяти идеальный выбор для редко изменяемых страниц приложения. На странице с динамичным информационным наполнением применять кэширование вывода не следует. Иначе каждая версия страницы будет кэшироваться отдельно, что уменьшит производительность.
Есть и другие способы реализации кэширования вывода. Самый простой из них — вставить в начало страницы директиву:
<Х§ OutputCache Duration="60" Х>
Тогда кэшируется весь результат. Длительность кэширования указывается в секундах.
Заключение
В этой статье мы показали, как с помощью ASP.NET создавать более эффективные и быстродействующие сайты электронной коммерции. Вы увидели преимущества некоторых новых средств ASP.NET (в том числе пользовательских элементов управления и Web-элемента DataList), а также узнали, как выполняется аутентификация на основе форм, проверяются входные данные, создается корзина покупателя и решаются некоторые другие задачи при разработке сайтов электронной коммерции.
Исходный код для этой статьи можно скачать по адресу load.microsoft.com/download/msdnmagazine/code/Aug02/WXP/EN-US/ AS PNET Commerce App.ехе.
Пол Яо и Дэвид Дюраи
