这种策略让缓存依赖于一个指定的文件,通过改变文件的更新日期来清除缓存。

///<summary>
/// 获取当前应用程序指定CacheKey的Cache对象值
///</summary>
///<param name="CacheKey">索引键值</param>
///<returns>返回缓存对象</returns>
publicstaticobject GetCache(string CacheKey)
{
  System.Web.Caching.Cache objCache = HttpRuntime.Cache;
  return objCache[CacheKey];
}
///<summary>
/// 设置以缓存依赖的方式缓存数据
///</summary>
///<param name="CacheKey">索引键值</param>
///<param name="objObject">缓存对象</param>
///<param name="cacheDepen">依赖对象</param>
publicstaticvoid SetCache(string CacheKey, object objObject, System.Web.Caching.CacheDependency dep)
{
  System.Web.Caching.Cache objCache = HttpRuntime.Cache;
   objCache.Insert
  (
    CacheKey,
    objObject,
    dep,
    System.Web.Caching.Cache.NoAbsoluteExpiration, //从不过期
    System.Web.Caching.Cache.NoSlidingExpiration, //禁用可调过期
    System.Web.Caching.CacheItemPriority.Default,
      null
    );
}
protectedvoid Page_Load(object sender, EventArgs e)

  string CacheKey ="cachetest";
  object objModel = GetCache(CacheKey);//从缓存中获取
   if (objModel ==null) //缓存里没有
   {
    objModel = DateTime.Now;//把当前时间进行缓存
    if (objModel !=null) { //依赖 C:\\test.txt 文件的变化来更新缓存
      System.Web.Caching.CacheDependency dep =new System.Web.Caching.CacheDependency("C:\\test.txt");
      SetCache(CacheKey, objModel, dep);//写入缓存
    }
  }
  Label1.Text = objModel.ToString();
}

  当我们改变test.txt的内容时,缓存会自动更新。这种方式非常适合读取配置文件的缓存处理。如果配置文件不变化,就一直读取缓存的信息,一旦配置发生变化,自动更新同步缓存的数据。

  这种方式的缺点是,如果缓存的数据比较多,相关的依赖文件比较松散,对管理这些依赖文件有一定的麻烦。对于负载均衡环境下,还需要同时更新多台Web服务器下的缓存文件,如果多个Web应用中的缓存依赖于同一个共享的文件,可能会省掉这个麻烦。

ASP.NET缓存全解析5:文件缓存依赖 转自网络原文作者李天平的更多相关文章

  1. ASP.NET缓存全解析6:数据库缓存依赖 转自网络原文作者李天平

    更多的时候,我们的服务器性能损耗还是在查询数据库的时候,所以对数据库的缓存还是显得特别重要,上面几种方式都可以实现部分数据缓存功能.但问题是我们的数据有时候是在变化的,这样用户可能在缓存期间查询的数据 ...

  2. ASP.NET缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman 转自网络原文作者李天平

    Memcached — 分布式缓存系统 1.Memcached是什么? Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度.Memcached通过在内 ...

  3. ASP.NET缓存全解析2:页面输出缓存 转自网络原文作者李天平

    页面输出缓存是最为简单的缓存机制,该机制将整个ASP.NET页面内容保存在服务器内存中.当用户请求该页面时,系统从内存中输出相关数据,直到缓存数据过期.在这个过程中,缓存内容直接发送给用户,而不必再次 ...

  4. ASP.NET缓存全解析1 转自网络原文作者李天平

    有时候总听到网友说网站运行好慢,不知如何是好:有时候也总见到一些朋友写的网站功能看起来非常好,但访问性能却极其的差.没有“勤俭节约”的意识,势必会造成“铺张浪费”.如何应对这种情况,充分利用系统缓存则 ...

  5. ASP.NET缓存全解析3:页面局部缓存 转自网络原文作者李天平

    有时缓存整个页面是不现实的,因为页的某些部分可能在每次请求时都需要变化.在这些情况下,只能缓存页的一部分.顾名思义,页面部分缓存是将页面部分内容保存在内存中以便响应用户请求,而页面其他部分内容则为动态 ...

  6. ASP.NET缓存全解析4:应用程序数据缓存 转自网络原文作者李天平

    System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类.此命名空间包括 Cache 类,该类是一个字典,您可以在其中存储任意数据对象,如哈希表和数据集.它还为这些对象提供了失效 ...

  7. (转)ASP.NET缓存全解析6:数据库缓存依赖

    ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓 ...

  8. C#系统缓存全解析(转载)

    C#系统缓存全解析 对各种缓存的应用场景和方法做了很详尽的解读,这里推荐一下 转载地址:http://blog.csdn.net/wyxhd2008/article/details/8076105

  9. C# 嵌入dll 动软代码生成器基础使用 系统缓存全解析 .NET开发中的事务处理大比拼 C#之数据类型学习 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持 基于EF Core的Code First模式的DotNetCore快速开发框架 【懒人有道】在asp.net core中实现程序集注入

    C# 嵌入dll   在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形 ...

随机推荐

  1. 前向否定界定符 python正则表达式不匹配某个字符串 以及无捕获组和命名组(转)

    [编辑] 无捕获组和命名组 精心设计的 REs 也许会用很多组,既可以捕获感兴趣的子串,又可以分组和结构化 RE 本身.在复杂的 REs 里,追踪组号变得困难.有两个功能可以对这个问题有所帮助.它们也 ...

  2. DevExpress 13.2.6源码、安装包、汉化包下载和教程

    DevExpress比DotNetBar控件成熟很多,当然源码是公开的,但是最新版本需要9K多.如果不是土豪,用已经破解的版本或者自己拿源码编译一份就可以了,老外就是这么好. 首先在这里下载然后解压准 ...

  3. 【S4】使用empty()而不是判断size()是否为0

    1.二者的作用是一样的,结果也是等价的.就是判断集合是否为空. 2.二者是等价的,为什么强调使用empty,因为empty效率更高. 3.在STL中,对于一般的集合,empty和size都是常数时间. ...

  4. c#winform使用WebBrowser 大全[超长文转载]

    1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时释放所有资源.必须在附加事件的同一线程上调用 ...

  5. [Angular 2] Share a Service Across Angular 2 Components and Modules

    Services are used to share data between components. They follow a module pattern that allows you to ...

  6. BIOS 深入学习 转

    http://blog.csdn.net/lightseed/article/category/547391

  7. Spring源码解析之:Spring Security启动细节和工作模式--转载

    原文地址:http://blog.csdn.net/bluishglc/article/details/12709557 Spring-Security的启动加载细节   Spring-Securit ...

  8. Linux Shell之top命令

    TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中C ...

  9. 关于Android LinearLayout添加分隔线的方法

    目前了解的办法有两个:1.自定义一个view当作分隔线:2.使用高版本的分隔线属性 一.在需要添加分隔线的地方,添加一个view,比如ImageView,TextView等都可以,如代码,关键是设置高 ...

  10. .net 4.0 运行时中运行.net2.0开发的程序

    其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的Sy ...