CSDN广告是越来越多了,所有博客笔记不再更新,新网址 DotNet笔记
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")效果一样
清空缓存:
///
/// 清空指定key的缓存
///
///
public static void ClearCache(string cacheKey)
{
List keys = new List();
// 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();
}