码迷,mamicode.com
首页 > Web开发 > 详细

MVC缓存 OutPutCache 学习笔记

时间:2016-01-19 14:28:43      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

OutPutCache 参数详解

 

Duration : 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的。

Location : 缓存放置的位置; 该值为枚举值: 

      None: 当被设置为None时,其余的任何设置将不起作用

      Any : 页面被缓存在浏览器、代理服务器端和web服务器端;

         Client : 缓存在浏览器;

         DownStream : 页面被缓存在浏览器和任何的代理服务器端;

         None : 页面不缓存;

         ServerAndClient : 页面被缓存在浏览器和web服务器端;

      默认为Any 。

Shared : 用来控制用户控件输出内容是否能够被多个页面共享。默认值为false。

 

VaryByCustom : 常用! 任何自定义输出缓存的文字。

      使用这个参数之后,可以很方便的使缓存过期..需要在 Global.asax文件中重写 HttpApplication.GetVaryByCustomString 方法..

      每一个要缓存的方法上都有缓存的配置..无论是单独写在Action上的..还是由web.config文件统一配置的..都要写 VaryByCustom参数..里边是一个名称..会是系统建立的这个缓存的类别词..

      在这个类别上..会因为访问参数不同而建立多个缓存..这些缓存会在Global.asax中重写的GetVartByCustomString方法中得到一个字符串.. 这个字符串和这个缓存形成对应关系..类似与键值对..

      当下次访问同一类别同一参数同一缓存时..会先调用GetVaryByCustomString()方法..如果得到的字符串与上次不一样了..则会丢弃缓存..执行Action里的逻辑重新生成缓存..

代码: 

 

[OutputCache(Duration=3600,Location=System.Web.UI.OutputCacheLocation.ServerAndClient,VaryByCustom="goods")]
public ActionResult Index()
{
    //Response.Cache.SetOmitVaryStar(true);
    return View();
}

 

运行顺序:

第一次访问 /Home/Index
Action 读取..执行逻辑..渲染页面..
执行Global.asax中的重写方法 GetVaryByCustomString(HttpContext context, string custom) 得到一个值..
然后发现配置方式为 varyByCustom 参数为 goods..
其中custom参数就是前边action配置上的 varyByCustom 参数值 goods
在 GetVaryByCustomString方法中执行 一般用switch结构..goods
最终程序返回一个string..无论是什么内容..程序会记录下来..与该试图做一个对应..
至此第一次缓存结束..
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二次访问的时候..程序会与第一次执行顺序不同..先执行 GetVaryByCustomString custom参数值为goods..
最终返回的值会与第一次的值做比对..
一样的话..程序会直接输出缓存..并不会去执行action方法..
而如果与第一次不一样..则会直接丢弃缓存..按第一次执行的顺序重新去执行action方法..(执行action..渲染页面..然后是GetVaryByCustomString)重新生成
至此得出..只要控制了每一个action对应的varyByCustom参数..就可以做到缓存的更新..
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
另外备注一点..
OutPutCache默认会根据参数不同产生不同的缓存..所以..在上述的过程中..即使vartByCustom的参数都是goods.. 但是后边ID不同..也会产生不同的缓存实例

 

 

(未完待续)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      

MVC缓存 OutPutCache 学习笔记

标签:

原文地址:http://www.cnblogs.com/iiwen/p/5141928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!