好记性不如烂笔头。

缓存的回调函数

protected void Page_Load(object sender, EventArgs e)  
        {
            string str = "";
            if (Cache["key"] == null)
            {
                str = System.IO.File.ReadAllText(Server.MapPath("TextFile1.txt")); //读取TextFile1.txt文件中的数据
                CacheDependency dp = new CacheDependency(Server.MapPath("TextFile1.txt"));//建立缓存依赖项dp
                Cache.Insert("key", str, dp, DateTime.Now.AddSeconds(20), Cache.NoSlidingExpiration, CacheItemPriority.Low, CacheItemRemovedCallback); 
                //CacheItemPriority这个参数为缓存的优先级他分好多种级别,为了防止缓存占满时系统自己删除缓存的优先顺序废除缓存的,后面的为回调函数的名称。
                Response.Write(Cache["key"]);   //如果TextFile1.txt这个文件的内容不变就一直读取缓存中的数据,一旦TextFile1.txt文件中的数据改变里面重新读取TextFile1.txt文件中的数据
            }
            else
            {
                Response.Write(Cache["key"]);
            }

        }

        public void CacheItemRemovedCallback(string key, object value, CacheItemRemovedReason reason) //这个为缓存移除时的回调函数,一定要保持与 Cache.Insert()方法中的最后一个参数名字一致,
            //这里使用了委托,你可以在 Cache.Insert()这个函数中转定义看到的,所以这里的格式就只能按我写的这种方法签名写。
        {
            System.IO.File.WriteAllText(Server.MapPath("log.txt"),"缓存移除原因为:"+reason.ToString());
        }

回调函数写的是生成一个log.txt,文件记录每一次缓存移除的原因