бы не создавать «дорогой» объект 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.ехе.

Пол Яо и Дэвид Дюраи



Картонная упаковки и дизайн ложементов. Любая картонная упаковка.