在ASP.Net中如何管理cache

发表于:2009-12-18 14:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  1.3 ASP.NET cache

  cache是我最喜欢用的机制,这也是为什么我喜欢说它的原因。它提供了键-值对应的方法,cache对应的命名空间是:System.Web.Caching 它的生命周期也依赖于应用程序,但它并不像session,这也是面向所有用户的。虽然cache看起来特别像application,但它最大的不同是提供了数据缓存失效控制方法以及数据缓存依赖管理。也就是说,在cache中我们可以非常容易的按照事先设定好的过期时间来让cache过期,删除 cache,我们也可以根据缓存依赖关系来操作cache,当依赖的关系有改动时,此时cache也会自动失效。而这都是applicaion没法办到的。

  现在让我们看下asp.net中是如何支持cache的过期以及数据缓存依赖的。

  1)缓存依赖:

  顾名思义它是指当事先设定的依赖关系发生变化时,cache 将会失效。在asp.net中提供了两种依赖关系:

  A. 文件缓存依赖:当磁盘上的一个文件发生变化时自动让cache失效

  下面是实例代码:

  object errorData;
  //Load errorData from errors.xml
  CacheDependency fileDependency =
  new CacheDependency(Server.MapPath("errors.xml"));
  Cache.Insert("ERROR_INFO", errorData, fileDependency);

  B. 键值缓存依赖:看起来和文件缓存非常像,不同之外就是这种依赖方式不同而已,当有多个cache信息之间互相关联时,一个 cache信息的变化将会引起其它cache的失效。例如一个用户信息包含:编号,姓名,地址等,如果用户编号发生变化则cache失效,这种情况下,用户的基本信息就依赖于用户编号。

  下面是示例代码:

  string[] relatedKeys = new string[1];
  relatedKeys[0] = "EMP_NUM";
  CacheDependency keyDependency = new CacheDependency(null, relatedKeys);
  Cache["EMP_NUM"] = 5435;
  Cache.Insert("EMP_NAME", "Shubhabrata", keyDependency);
  Cache.Insert("EMP_ADDR", "Bhubaneswar", keyDependency);
  Cache.Insert("EMP_SAL", "5555USD", keyDependency);

  2)过期策略:从创建cache开始,一段时间后自动过期。

  示例代码:

  //Absolute Expiration
  Cache.Insert("EMP_NAME", "Shubhabrata", null,
  DateTime.Now.AddDays(1), Cache.NoSlidingExpiration);
  //Sliding Expiration
  Cache.Insert("EMP_NAME", "Shubhabrata", null,
  Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(60));

43/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号