Поделиться через


Кэширование в приложениях платформы .NET Framework

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

Платформа .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 для элемента caching (схема параметров ASP.NET).

ASP.NET позволяет расширить кэширование выходных данных путем создания пользовательских поставщиков кэша выходных данных. С помощью пользовательских поставщиков можно хранить кэшированное содержимое на других запоминающих устройствах, таких как диски, облачные хранилища и распределенные модули кэширования. Для создания пользовательского поставщика кэша выходных данных необходимо создать класс, производный от класса OutputCacheProvider, и настроить для приложения использование пользовательского поставщика кэша выходных данных.

Кэширование в службах WCF REST

Для служб WCF REST платформа .NET Framework позволяет использовать преимущества декларативного кэширования выходных данных, доступного в ASP.NET. Это дает возможность кэшировать ответы операций службы WCF REST. Когда пользователь отправляет запрос HTTP GET в службу, для которой настроено кэширование, ASP.NET отправляет обратно кэшированный ответ, а метод службы при этом не вызывается. По истечении срока действия кэша при следующей отправке пользователем запроса HTTP GET будет вызван метод службы, и ответ будет снова кэширован.

Платформа .NET Framework позволяет также реализовать условное кэширование HTTP GET. В сценариях REST условный HTTP-запрос GET часто используется службами для реализации интеллектуального HTTP-кэширования, которое описано в спецификации протокола HTTP. Дополнительные сведения см. в разделе Поддержка кэширования для веб-служб HTTP WCF.

Расширение кэширования в платформе .NET Framework

Кэширование в платформе .NET Framework предусматривает возможность расширения. Класс ObjectCache позволяет создавать пользовательскую реализацию кэша. Этот класс предоставляет члены, доступные всем управляемым приложениям, включая Windows Forms, Windows Presentation Foundation (WPF) и Windows Communications Foundation (WCF). С помощью пользовательской реализации можно создать класс кэша, использующий другой механизм хранения, или обеспечить точный контроль над операциями кэша.

Для расширения кэширования можно выполнить указанные ниже действия.

Дополнительные сведения см. в записи Расширяемое кэширование выходных данных с помощью ASP.NET 4 (VS 2010 и платформа .NET Framework серии 4.0) в блоге Скотта Гатри.

См. также