ASP.net中的缓存
使用缓存的情况:要缓存那些经常被访问,并且变化不大的数据。缓存整个应用程序都要使用的设置或对象(但这些设置和对象必须在其生存期内不变化)
二种用于WEB应用的缓冲技术:输出缓冲和数据缓冲。
输出缓冲:把一次请求所产生的动态输出保存于内存中。
状态:如果没有使用缓存,状态随着数据而变,
如果使用缓存,状态根据缓存设置的时间再变。
Response.Cache.SetExpires(DateTime.Now.AddSeconds(10)); //缓存时间为10秒
Respones.Cache.SetCacheability(HttpCacheability.Public); //任何人都可以访问缓存。
或者在页面html头加上:<%OutPutCache Duration="10" VaryByParm="None"%>效果是一样的。
数据缓冲:可以缓存任何数据。
使用:Cache["UserName"]="MeMe";
Response.Write(Cache["UserName"]);
注意,Cache不能通过下标访问,如Cache[0]
缓存删除:Cache.Remove("UserName");
缓存变量的添加:Cache.Add(); Cache.Insert()
用Insert来增加缓存灵活,为什么呢,因为Insert缓存的时候,可以增加数据依赖,就是说,缓存的依赖项变了,缓存则会重建。
Insert(Key,value,dependencies,absoluteExpiration,slidingExpiration,priority,priorityDecay,onRemoveCallBack);
可以看到insert缓存可控制的参数也相当多,得到的缓存也相当的灵活。
缓存失效(替换)的情况:
1.腐烂搜索:当内存紧张时,缓存机制会找出不常用或不重要的对象,清出缓存。
2.到期控制:指定对象的生存周期。指定的时间可以是绝对的,也可以是相对的。
3.文件和键值的依赖:从外部文件或其它缓存键值是否改变,来决定本身键值是否有效。
比如,依赖某个文件:Cache.Insert("DataCach5",dv1,new CacheDependency(server.MapPath("customl.xml"); //此缓存依赖customl.xml