.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 命名空间包含针对 Web 和非 Web 应用程序设计的 API。

缓存数据

您可以使用 System.Runtime.Caching 命名空间中的类来缓存信息。 该命名空间中的缓存类提供以下功能:

  • 抽象类型,为创建自定义缓存实现提供基础。

  • 一个具体的内存中对象缓存实现。

抽象基本缓存类 (ObjectCache) 定义以下缓存任务:

  • 创建和管理缓存条目。

  • 指定过期和逐出信息。

  • 触发因响应缓存条目更改而引发的事件。

MemoryCache 类是 ObjectCache 类的内存中对象缓存实现。 您可以对多数缓存任务使用 MemoryCache 类。

注意注意

MemoryCache 类在 System.Web.Caching 命名空间中定义的 ASP.NET 缓存对象上进行建模。因此,内部缓存逻辑与 ASP.NET 早期版本中提供的逻辑类似。

有关如何在 WPF 应用程序中使用缓存的示例,请参见演练:在 WPF 应用程序中缓存应用程序数据

在 ASP.NET 应用程序中缓存

System.Runtime.Caching 命名空间中的缓存类提供在 ASP.NET 中缓存数据的功能。

注意注意

如果您的应用程序以 .NET Framework 3.5 或早期版本为目标,则必须使用 System.Web.Caching 命名空间中定义的缓存类。有关更多信息,请参见 ASP.NET 缓存概述

注意注意

当开发新应用程序时,建议您使用 MemoryCache 类。System.Runtime.Caching 命名空间中提供的 API 与 Cache 命名空间中提供的 API 类似。因此,如果您使用过 ASP.NET 早期版本中的缓存,则会对 API 很熟悉。有关如何在 ASP.NET 应用程序中使用缓存的示例,请参见演练:在 ASP.NET 中缓存应用程序数据

输出缓存

若要手动缓存应用程序数据,您可以使用 ASP.NET 中的 MemoryCache 类。 ASP.NET 还支持输出缓存,以便将页面、控件和 HTTP 响应生成的输出存储到内存中。 您可以在 ASP.NET 网页中通过声明的方式,或者使用 Web.config 文件中的设置来配置输出缓存。 有关更多信息,请参见caching 的 outputCache 元素(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 Specification(HTTP 规范)中所述。 有关更多信息,请参见 Caching Support for WCF Web HTTP Services(WCF Web HTTP 服务的缓存支持)。

在 .NET Framework 中扩展缓存

.NET Framework 中的缓存被设计为可进行扩展。 通过 ObjectCache 类,您可以创建自定义缓存实现。 该类提供可用于所有托管应用程序的成员,包括 Windows 窗体、Windows Presentation Foundation (WPF) 和 Windows Communications Foundation (WCF)。 若要创建使用不同存储机制的缓存类,或者要对缓存操作进行精细控制,则可以执行此操作。

若要扩展缓存,可执行以下操作:

有关更多信息,请参见 Scott Guthrie 博客上的 Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET 4.0 Series)(ASP.NET 4 的可扩展输出缓存(VS 2010 和 .NET 4.0 系列))文章。

请参见

任务

演练:在 WPF 应用程序中缓存应用程序数据

参考

ObjectCache

MemoryCache

其他资源

演练:在 ASP.NET 中缓存应用程序数据