MSDN网址:点击打开MSDN的Cache类链接
缓存的作用:-------它太重要了,不多说了
缓存作用域:任意用户 即:a用户访问时候,web服务器缓存的内容,b用户后来访问的时候,如果不过期,可以直接用
如何访问他:ASP.NET为了方便我们访问Cache,在HttpRuntime类中加了一个静态属性Cache,这样,我们就可以在任意地方使用Cache的功能。 而且,ASP.NET还给它增加了二个“快捷方式”:Page.Cache(mvc中无法使用的), HttpContext.Current.Cache,我们通过这二个对象也可以访问到HttpRuntime.Cache, 注意:这三者是在访问同一个对象。
缓存注意项:使用Cache时,一般只有二个操作:读,写。要从Cache中获取一个缓存项,我们可以调用Cache.Get(key)方法,要将一个对象放入缓存,我们可以调用Add, Insert方法。如果您希望某个缓存项目一旦放入缓存后,就不要再被修改,那么调用Add确实可以防止后来的修改操作。 而调用Insert方法,则永远会覆盖已存在项(哪怕以前是调用Add加入的)。
注意add和insert的参数设置 举个insert的例子(add参数也是同样的)
public void Insert( string key, Object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration )
.dependencies:用于设置缓存依赖项, 平时使用直接为null就行了
·absoluteExpiration:用于设置绝对过期时间,它表示只要时间一到就过期,所以类型为System.DateTime,当给这个参数设置了一个时间时,slidingExpiration参数的值就只能为Cache.NoSlidingExpiration,否则出错;
·slidingExpiration:用于设置可调过期时间,它表示当离最后访问超过某个时间段后就过期,所以类型为System.TimeSpan,当给这个参数设置了一个时间段时,absoluteExpiration的值就只能为Cache.NoAbsoluteExpiration,否则出错;
当然,也允许这两个参数都不设置值,那么absoluteExpiration值为Cache.NoAbsoluteExpiration,slidingExpiration值为Cache.NoSlidingExpiration也是可以的,比如缓存依赖于某个文件时,这就非常有用。
示例代码:
TimeSpan ts = new TimeSpan(0, 0, 20); HttpContext.Cache.Insert("name", DateTime.Now.ToString(), null, DateTime.UtcNow.Add(ts), Cache.NoSlidingExpiration); string str = HttpContext.Cache["name"].ToString();//使用HttpContext.Cache..Get("name")效果一样
清空缓存:
/// <summary> /// 清空指定key的缓存 /// </summary> /// <param name="cacheKey"></param> public static void ClearCache(string cacheKey) { List<string> keys = new List<string>(); // retrieve application Cache enumerator IDictionaryEnumerator enumerator = HttpRuntime.Cache.GetEnumerator(); // copy all keys that currently exist in Cache while (enumerator.MoveNext()) { keys.Add(enumerator.Key.ToString()); } // delete every key from cache for (int i = 0; i < keys.Count; i++) { if (keys[i]==cacheKey) { HttpRuntime.Cache.Remove(keys[i]); } } }
本文结束!!!
随笔小记:在mvc中action的缓存:
有人说[OutputCache(Duration = 20)]这样用法是针对单用户的缓存,其实,只要不缓存在客户端,就是针对的所有用户
ASP.NET MVC中使用OutputCache实现服务器端页面级缓存注意问题
[OutputCache(Duration = 20)] public ActionResult About() { ViewBag.Message = DateTime.Now.ToString(); return View(); }