本文内容

  • 缓存方式
  • 自动移除
  • 应用程序缓存依赖

 

在 Web 应用程序开发中,缓存对应用程序性能的提高有很大帮助。比如,在同一个应用中,经常发生对同一数据、逻辑功能和用户界面的多次请求。当用户的基数很大时,如果每次的请求都进行处理,则会消耗很多的服务器资源。另外,有时服务器提供的数据服务可能会意外地停止,使用缓存技术可以在一定时间内仍然正常地提供对最终用户的支持,提高系统的可用性。因此,将不怎么改变的数据缓存起来,如国家列表等,就能明显提高Web应用程序的反应速度。缓存技术就是将访问频率或是构造成本高的数据缓存在内存中,避免数据的重复创建、处理和传输。

 

缓存方式

ASP.NET中的缓存大体上分为两种方式:应用程序缓存和页面输出缓存。前者用编程的方式来缓存数据,这是本文主要说明的东西;后者是通过配置每个页面或是Web.config文件来实现的。而页面输出缓存有两种方式,一是缓存整个页面,一是缓存部分页面……这部分的内容以后再说。

 

自动移除

ASP.NET从缓存中自动移除数据的原因是以下之一:

  • 服务器内存过低;
  • 缓存项过期;
  • 缓存项依赖改变。

 

应用程序缓存依赖

缓存依赖可以有以下几种方式:键和值依赖;文件依赖,缓存项依赖于一个外部文件,比如XML文件,如果这个文件被修改或删除,则缓存项将被移除;SQL依赖,缓存项依赖于Microsoft SQL Server 2005、SQL Server 2000、或是SQL Server 7.0数据库的一个表,对于SQL Server 2005,缓存项可以依赖表中的一条记录;聚合(Aggregate)依赖,缓存项同时依赖于前边的几种情况,比如一个缓存项同时依赖于另一个缓存项和外部文件,如果其中一个改变,则缓存项将被移除;自定义依赖。

如何向缓存中添加缓存项

你可以在应用程序中使用Cache对象访问缓存项。使用Cache对象的Insert方法将一个缓存项添加到应用程序缓存中,该方法有很多重载方法,让你用不同的缓存策略将一个缓存项添加到缓存中。

如果你用Insert方法向缓存中添加缓存项,并且缓存中存在同名缓存项,那么,缓存中的同名缓存项将被替换(覆盖)。

你也可以使用Add方法将缓存项添加到缓存中,添加的方法同Insert一样。Add方法会返回你添加到缓存中的对象。另外,如果使用Add方法添加缓存项,并且缓存中存在同名缓存项,那么这个同名缓存项将不会被替换,也不会产生异常。

本文说明根据不同的缓存策略将缓存项添加到应用程序缓存的方法:

  • 通过设置键和值,直接将一个缓存项添加到应用程序缓存。
  • 通过Insert方法将缓存项添加到应用程序缓存。
  • 添加一个带缓存依赖的缓存项到应用程序缓存。当缓存依赖发生变化时,这个缓存项将被从缓存中移除。你可以设置基于其他缓存项、文件或是多个对象的缓存依赖。
  • 添加一个带过期策略的缓存项到应用程序缓存。除了可以设置缓存依赖外,你也可以设置缓存项在一段时间后过期(滑动过期时间)或是在一个规定的时间过期(绝对过期时间),不能同时规定这两个过期时间。
  • 添加一个带缓存优先级的缓存项到应用程序缓存。缓存优先级可以帮助.NET框架决定哪个缓存项先被移除。
  • 通过Add方法添加一个缓存项到应用程序缓存。

除了以上的缓存依赖外,你可以在数据库的表上创建缓存依赖,或是自定义缓存依赖。通过CacheItemRemovedCallback委托,当从缓存中移除缓存项时,会提示应用程序。

以下是将缓存项添加到应用程序的具体方法:

1) 通过设置键和值,直接将一个缓存项添加到应用程序缓存。下面的代码演示键为“CacheItem1”,值为“Cached Item 1”的缓存项添加到缓存中:

;

相关文章: