Cache和Application都是应用程序级的缓存机制; 两者都是使用键值对来存储对象,两者都是应用程序同生命周期(在cache不设置缓存策略的情况下)
Session是用户会话级的缓存机制;
#插入缓存信息
HttpContext.Current.Cache["token"] = "tokenValue";
HttpContext.Current.Cache.Insert("token1", "tokenValue1");
#插入带有过期时间的缓存信息
设置过期时间有两种方式:
-
absoluteExpiration:
所插入对象将过期并被从缓存中移除的时间。
如果使用绝对过期,则 slidingExpiration 参数必须为 Cache.NoSlidingExpiration。 -
slidingExpiration:
最后一次访问所插入对象时与该对象过期时之间的时间间隔。如果该值等效于 20 分钟,
则对象在最后一次被访问 20 分钟之后将过期并被从缓存中移除。如果使用可调过期,则absoluteExpiration 参数必须为 System.Web.Caching.Cache.NoAbsoluteExpiration。
//表示最后一次访问缓存后两个小时过期
HttpContext.Current.Cache.Insert("token2","tokenValue2", null, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(2));
//表示缓存两个小时后过期
HttpContext.Current.Cache.Insert("token3","tokenValue3", null,DateTime.Now.AddHours(2), Cache.NoSlidingExpiration);
Cache.Add方法,用法和Insert差不多,区别在于Add碰到该key原来有赋过值会失败,Insert则不会,而会替换原有值;Add会返回被缓存数据项,Insert不会
#插入带文件依赖的缓存信息
string path = Server.MapPath("/Test/Config.xml");
CacheDependency cacheDependency=new CacheDependency(path);
HttpContext.Current.Cache.Insert("config", "配置", cacheDependency);
Config.xml文件变化,缓存就失效了!
string path = Server.MapPath("/Test/Config.xml");
CacheDependency cacheDependency=new CacheDependency(path,DateTime.Now.AddDays(1));
HttpContext.Current.Cache.Insert("config", "配置", cacheDependency);
创建缓存后1天之后对文件所做的更改才会影响缓存依赖。在这1天内可以随便更改而不会影响缓存依赖;
#移除缓存信息
HttpContext.Current.Cache.Remove("key");