• 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 }

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

  • 相关阅读:
    开源控件PullToRefreshGridView的使用(三)
    JS中的运算符 以及变量和输入输出
    HTML中表格
    JS中 事件冒泡与事件捕获
    JS中的循环结构
    UML类图详解
    一步一步生成图片水印
    快速生成缩略图
    ==和Equal()的区别
    屌丝程序人生(下)
  • 原文地址:https://www.cnblogs.com/lavenderzh/p/2235801.html
Copyright © 2020-2023  润新知