zoukankan      html  css  js  c++  java
  • MVC缓存OutPutCache学习笔记 (二) 缓存及时化VaryByCustom

    <MVC缓存OutPutCache学习笔记 (一) 参数配置>

    本篇来介绍如何使用 VaryByCustom参数来实现缓存的及时化..

    根据数据改变来及时使客户端缓存过期并更新..

    首先更加上一篇中的配置..要在 Global.asax文件中重写 HttpApplication.GetVaryByCustomString 方法..

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

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

    上代码: 

      Controller:

            [OutputCache(CacheProfile = "goodsInfo")]
            public ActionResult Index()
            {
                Response.Cache.SetOmitVaryStar(true);
                return View();
            }

     Global.asax

    public override string GetVaryByCustomString(HttpContext context, string custom)
    {
        //这里的Custom参数传递的就是Action上VaryByCustom参数的值 goodsList
        //一般底下都会用witch的..这里就不麻烦了 ..
        if (custom.ToLower() == "goodsList")
        {
            return ""; //"这个字符串会与当前action的缓存对应..字符串一改变..缓存就会被丢弃."; 
        }
        return base.GetVaryByCustomString(context, custom);
    }

    仔细看上边的备注就应该能够明白这里边流程是怎么走的..不懂的往下看..

     

    以上得出..缓存机制的运行顺序应该是这样的(觉得不对的..请留言..我们讨论一下):第一次访问 /Home/Index 

    Action 读取..执行逻辑..渲染页面..
    执行Global.asax中的重写方法 GetVaryByCustomString(HttpContext context, string custom) 得到一个值..发现配置方式为 varyByCustom 参数为 goodsList..
    在 GetVaryByCustomString方法中执行得到一个string..程序会记录下来与该试图做个对应..流程结束
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    第二次访问的时候..程序会先执行 GetVaryByCustomString得到最后的值会与第一次时得到的比对..一样就返回缓存..不一样..就丢弃原有缓存..重新执行Action并缓存结果输出..
    最终结果..只要控制了每一个action缓存返回的结果..就可以做到缓存的更新..
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
    另外备注一点..
    OutPutCache默认会根据参数不同产生不同的缓存..所以..在上述的过程中..即使vartByCustom的参数都是goods.. 但是后边ID不同..也会产生不同的缓存实例

     

  • 相关阅读:
    Builder与Factory,殊途同归!
    IIS中的身份验证
    如何给项目选择合适语言(转)
    动态行转列
    ORACLE系统表大全(转)
    C# 操作Word文档(转)
    产品化思维之分层的思想
    开发管理目前开发工作的问题分析和诊断
    MongoDB数据插入、删除、更新、批量更新某个字段
    学习正则表达式
  • 原文地址:https://www.cnblogs.com/iiwen/p/5142329.html
Copyright © 2011-2022 走看看