Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Кэширование позволяет хранить данные в памяти для быстрого доступа. При повторном доступе к данным приложения могут получать данные из кэша, а не извлекать их из исходного источника. Это может повысить производительность и масштабируемость. Кроме того, кэширование делает данные доступными при временной недоступности источника данных.
Платформа .NET Framework предоставляет функции кэширования, которые можно использовать для повышения производительности и масштабируемости клиентских и серверных приложений Windows, включая ASP.NET.
Замечание
В .NET Framework 3.5 и более ранних версиях ASP.NET предоставлял реализацию кэша в памяти в пространстве имен System.Web.Caching. В предыдущих версиях .NET Framework кэширование было доступно только в пространстве имен System.Web и, следовательно, требуется зависимость от классов ASP.NET. В .NET Framework 4 System.Runtime.Caching пространство имен содержит API, предназначенные для Веб-приложений и не Веб-приложений.
Кэширование данных
Сведения можно кэшировать с помощью классов в System.Runtime.Caching пространстве имен. Классы кэширования в этом пространстве имен предоставляют следующие функции:
Абстрактные типы, предоставляющие основу для создания пользовательских реализаций кэша.
Реализация конкретного кэша объектов в памяти.
Абстрактный базовый класс кэширования (ObjectCache) определяет следующие задачи кэширования:
Создание записей кэша и управление ими.
Указание сведений об истечении срока действия и удаления.
Активация событий, создаваемых в ответ на изменения записей кэша.
Класс MemoryCache — это реализация кэша объектов класса ObjectCache в памяти. Вы можете использовать класс MemoryCache для большинства задач кэширования.
Замечание
Класс MemoryCache моделируется по объекту кэша ASP.NET, определенному в пространстве имен System.Web.Caching. Таким образом, внутренняя логика кэширования аналогична логике, предоставленной в более ранних версиях ASP.NET.
Пример использования кэширования в приложении WPF см. в пошаговом руководстве. Кэширование данных приложения в приложении WPF.
Кэширование в приложениях ASP.NET
Классы кэширования в System.Runtime.Caching пространстве имен предоставляют функциональные возможности кэширования данных в ASP.NET.
Замечание
Если ваше приложение предназначено для .NET Framework 3.5 или более старой версии, необходимо использовать классы кэширования, определенные в пространстве имен System.Web.Caching. Дополнительные сведения см. в разделе ASP.NET Обзор кэширования.
Замечание
При разработке новых приложений рекомендуется использовать MemoryCache класс. API, предоставляемый в пространстве имен System.Runtime.Caching, похож на API, предоставляемый в пространстве имен Cache. Поэтому API будет знаком, если вы использовали кэширование в более ранних версиях ASP.NET. Пример использования кэширования в приложениях ASP.NET см. в пошаговом руководстве. Кэширование данных приложения в ASP.NET.
Кэширование выходных данных
Чтобы вручную кэшировать данные приложения, можно использовать MemoryCache класс в ASP.NET. ASP.NET также поддерживает кэширование выходных данных, в которых хранятся созданные выходные данные страниц, элементов управления и HTTP-ответов в памяти. Вы можете настроить кэширование выходных данных декларативно на веб-странице ASP.NET или с помощью параметров в файле Web.config. Дополнительные сведения см. в разделе outputCache Element для кэширования (схема параметров ASP.NET).
ASP.NET позволяет расширить кэширование выходных данных путем создания пользовательских поставщиков кэша выходных данных. С помощью настраиваемых поставщиков можно хранить кэшированное содержимое с помощью других устройств хранения, таких как диски, облачное хранилище и подсистемы распределенного кэша. Чтобы создать поставщик пользовательского кэша выходных данных, создайте класс, производный от OutputCacheProvider класса, и настройте приложение для использования поставщика пользовательского кэша выходных данных.
Кэширование в службах REST WCF
Для служб REST WCF платформа .NET Framework позволяет использовать декларативное кэширование выходных данных, доступное в ASP.NET. Это позволяет кэшировать ответы из операций службы REST WCF. Когда пользователь отправляет HTTP-запрос GET в службу, настроенную для кэширования, ASP.NET отправляет кэшированный ответ, а метод службы не вызывается. После истечения срока действия кэша в следующий раз, когда пользователь отправляет HTTP-запрос GET, вызывается метод службы, а ответ снова кэшируется.
Платформа .NET Framework также позволяет реализовать условное кэширование HTTP GET. В сценариях REST условный HTTP-запрос GET часто используется службами для реализации интеллектуального кэширования HTTP, как описано в спецификации HTTP. Дополнительные сведения см. в разделе "Поддержка кэширования для веб-служб WCF Web HTTP".
Расширение кэширования в .NET Framework
Кэширование в .NET Framework предназначено для расширения. Класс ObjectCache позволяет создать пользовательскую реализацию кэша. Этот класс предоставляет элементы, доступные всем управляемым приложениям, включая Windows Forms, Windows Presentation Foundation (WPF) и Windows Communications Foundation (WCF). Это можно сделать для создания класса кэша, использующего другой механизм хранения, или, если требуется детализированный контроль над операциями кэша.
Чтобы расширить кэширование, можно выполнить следующее:
Создайте пользовательский класс, производный от ObjectCache класса, а затем предоставьте производную реализацию кэша в производном классе.
Создайте класс, производный от MemoryCache класса, и настройте или расширьте производный класс. Пример этого см. в разделе Кэширование данных приложения с помощью нескольких объектов кэша в приложении ASP.NET.
Создайте класс, производный от OutputCacheProvider класса, и настройте приложение для использования поставщика пользовательского кэша выходных данных.
Дополнительные сведения см. в записи Расширяемый кэширование выходных данных с помощью ASP.NET 4 (VS 2010 и .NET Framework 4.0 серии) в блоге Скотта Гатри.