asp.net中的缓存(三)应用程序数据缓存

应用程序数据缓存

本缓存依赖于 System.Web.Caching 命名空间。

      该命名空间提供了缓存服务器上常用的数据的类,其包含的一个Cache类提供很多的方法,由于该类是一个字典类,所以,在其中存放任意的数据对象,如哈希表、数据集等。这些方法能够对这些对象进行增加、删除、失效等操作,甚至还可以依赖其它文件或缓存项的对象,并且能在从Cache中移除对象时执行回调以通知应用程序。示例代码如下:

应用程序数据缓存

1  //  增加命名空间
  2  using System.Web.Caching;
  3 
  4  ///   <summary>
  5  ///  根据索引键值从缓存中获取对象
  6  ///   </summary>
  7  ///   <param name="cacheKey"> 索引键值 </param>
  8  ///   <returns> 缓存的对象 </returns>
  9  private  static  object GetObjectFromCache( string cacheKey)
10 {
11     Cache cache = HttpRuntime.Cache;
12      return cache[cacheKey];
13 }
14 
15  ///   <summary>
16  ///  将对象以cacheKey为索引键值添加到缓存中
17  ///   </summary>
18  ///   <param name="cacheKey"> 索引键值 </param>
19  ///   <param name="obj"> 需要缓存的对象 </param>
20  private  static  void AddObjectToCache( string cacheKey,  object obj)
21 {
22     Cache cache = HttpRuntime.Cache;
23     cache.Insert(cacheKey, obj);
24 }
25 
26  ///   <summary>
27  ///  将对象以cacheKey为索引键值添加到缓存中
28  ///   </summary>
29  ///   <param name="cacheKey"> 索引键值 </param>
30  ///   <param name="obj"> 需要缓存的对象 </param>
31  ///   <param name="absoluteExpiration"> 绝对过期时间 </param>
32  ///   <param name="slidingExpiration"> 最后一次访问所插入对象时与该对象过期时之间的时间间隔 </param>
33  private  static  void AddObjectToCache( string cacheKey,  object obj, DateTime absoluteExpiration, TimeSpan slidingExpiration)
34 {
35     Cache cache = HttpRuntime.Cache;
36     cache.Insert(cacheKey, obj,  null, absoluteExpiration, slidingExpiration);
37 }
38 
39  protected  void Page_Load( object sender, EventArgs e)
40 {
41      string cacheKey =  " __test ";
42 
43      //  从缓存中获取
44      object obj = GetObjectFromCache(cacheKey);
45      //  缓存里没有
46      if (obj ==  null)
47     {
48          //  把当前时间进行缓存
49         obj = DateTime.Now;
50          if (obj !=  null)
51         {
52              //  缓存时间30秒
53              int cacheTime =  30;
54              //  添加到缓存中去
55             AddObjectToCache(cacheKey, obj, DateTime.Now.AddSeconds(cacheTime), TimeSpan.Zero);
56         }
57     }
58     Literal1.Text = obj.ToString();
59 }

      这些代码就是比较好的缓存解决方法,不过这里有一个问题,当数据发生变化时,缓存里面还是过期的数据,只有等到缓存内容过期之后,才能重新获取新的数据。下面两篇就解决了这个问题。

你可能感兴趣的:(asp.net)