ASP.NET 缓存对象的使用

    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();
        }




你可能感兴趣的:(Asp.net)