ASP.NET 缓存(十五)--缓存应用程序数据
ASP.NET 为您提供了一个强大的、便于使用的缓存机制,允许您将需要大量的服务器资源来创建的对象存储在内存中。它是由 Cache 类实现的,实例是每个应用程序专用的,其生存期依赖于该应用程序的生存期。重新启动应用程序后,将重新创建 Cache 对象。
设计 Cache 类是为了便于使用。通过使用与值成对的键,您可以将项放置在 Cache 中并在以后检索它们。有关如何进行该操作的示例,请参见将项添加到缓存中和检索缓存项的值。
Cache 类为您提供了一个简单的接口来自定义缓存设置,它还提供了强大的功能允许您自定义如何缓存项以及将它们缓存多长时间。例如当缺乏系统内存时,缓存自动移除很少使用的或不重要的项以允许使用内存来处理大量的请求。这种技术叫做清理。这是缓存确保非当前数据不使用宝贵的服务器资源的一种方式。
当执行清理时,您可以指示 Cache 给予某些项比其他项更高的优先级。若要指示特定项比其他项具有较高或较低的重要性,请在使用 Cache.Add 方法或 Cache.Insert 方法添加项时指定一个 CacheItemPriority 枚举值。
当使用 Add 方法或 Insert 方法将项添加到 Cache 时,您还可以建立项的到期策略。您可以通过使用 absoluteExpiration 参数定义项的生存期,该参数为 DateTime 类型,它允许您指定该项的确切到期时间。您还可以使用 slidingExpiration 参数,该参数为 TimeSpan 类型。它允许您根据访问项的时间来指定该项到期之前的运行时间。一旦该项到期,便将它从缓存中移除。试图检索其值将返回 null,除非该项被重新添加到 Cache 中。
对于存储在 Cache 中的易失项(例如那些经常进行数据刷新的项或那些只在一段时间内有效的项),设置一种到期策略,只要这些项的数据保持为最新的,就将它们保留在 Cache 中。例如,如果您正在编写一个应用程序,该应用程序通过从一个经常更新的 Web 站点获得数据来跟踪体育比赛的比分,那么只要源 Web 站点上比赛的比分不更改,就可以缓存这些比分。在此情况下,您可以根据该 Web 站点更新比分的频率来设置到期策略。您可以编写代码来确定 Cache 中是否是最新的比分。如果该比分不是最新的,则该代码可以从源 Web 站点更新比分。
最后,ASP.NET 允许您根据外部文件、目录或另一个缓存项定义缓存项的有效性。这些叫做文件依赖项和键依赖项。如果依赖项更改,则缓存项失效并被从 Cache 中移除。您可以使用该技术在项的数据源更改时从 Cache 中移除这些项。例如,如果您编写一个处理 XML 文件中财务数据的应用程序,并将其呈现在图形中,则您可以从该文件将数据插入 Cache 并在该 XML 文件上保留一个依赖项。当该文件更新时,从缓存中移除该项,您的应用程序重新读取该文件,然后插入该项的一个新版本。
注意 Cache 没有关于它所包含项的内容的信息。它只保留对这些对象的引用。它还提供跟踪它们的依赖项和设置到期策略的方法。
有关如何使用这些功能的更多信息,请参见将项添加到缓存中。