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

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

  • 相关阅读:
    APS系统如何落地?用户实际痛点解析!
    供应链如何优化?高级排程系统为其运算
    不懂APS系统?十个问答让你对APS瞬间明明白白
    智能制造主战场在哪?数字化车间建设尤为重要
    中国制造转型的关键在哪里?智能制造点亮发展明灯
    你家的APS系统有这些功能吗?排程系统功能盘点
    微软正开发Office Reader和Office Lens
    C#的3DES加密解密算法
    如何在SharePoint2010中创建自定义电子邮件警报处理程序
    规划SharePoint2010的管理员密码更改
  • 原文地址:https://www.cnblogs.com/lavenderzh/p/2235801.html
Copyright © 2020-2023  润新知