zoukankan      html  css  js  c++  java
  • MVCCache1.输出缓存(Cache:[1].输出缓存2.应用程序缓存)

    缓存前提概念:

    1.使用缓存的目的就是为提供网站性能,减轻对数据库的压力,提高访问的速度。
    2.如果使用缓存不当,比不使用缓存造成的影响更恶劣(缓存数据的更新不及时、缓存过多等).
    3..net MVC 中有两种相应的缓存技术 :1.应用程序缓存 。2.输出缓存

    应用程序缓存和输出缓存的区别

    输出缓存:也就是Outputcache 是相对于某个Action或Controller而言。使用的场景包括某个页面的数据更新不是很频繁,不需要每次都从数据库区查询。缓存起来从内存中读取。比如文章详情,排名什么的。
    数据缓存:是相对于全局的。任何地方需要调用的时候都可以去调用。使用的场景包括权限管理这种模块的。每个角色对于菜单的访问都是固定的,所以有必要将角色,权限,菜单这种数据做一个全局的数据缓存。修改时再做缓存的更新。
    如果通俗一点来说输出缓存就像是“局部变量”,数据缓存就像是全局变量。


    1.输出缓存-OutputCache

    主要是Outputcache的基本使用。 第一种输出缓存的使用方法是在Controller 或Action上打[OutPutCache]特性即可。
    [OutputCache(Duration =20,VaryByParam ="type,page")]  //根据参数type,page,任意参数变化,更新缓存;参数无变化则每隔20秒丢掉旧缓存,等待新的请求,更新缓存数据。不标注VaryByParam 则默认根据所有参数缓存.
    //根据参数,从数据库中获取指定详细内容,并缓存该内容。不同的参数会得到不同的内容,自然也会有缓存。
    public ActionResult ExampleVaryByParam(string type,int page)  
    {  
        ViewBag.type = type;  
        ViewBag.page= page;  
        return View();  
    } 
     
    

    第二种输出缓存的使用方法是使用配置文件CacheProfile设置缓存.其实作用和效果还是一样,无非就是方便点,统一的配置参数都直接写webconfig文件里面。当然你也可以在Controller中写。
    web.config部分定义了一个名为“exampleCacheProfile”的缓存配置文件。使用该配置项时,只需指定CacheProfile=配置项名称即可。

     <!---CacheProfile配置文件中设置缓存-->  
      <caching>  
        <outputCacheSettings>  
          <outputCacheProfiles>  
            <add name="exampleCacheProfile1" duration="20"  VaryByParam ="type")/>  
            <add name="exampleCacheProfile2" duration="20"  VaryByParam ="page")/>  
            <add name="exampleCacheProfile3" duration="20"  VaryByParam ="type,page")/>  
                                                                                  .
                                                                                  .
                                                                                  .
          </outputCacheProfiles>  
        </outputCacheSettings>  
      </caching>   
    <!---CacheProfile配置文件中设置缓存end-->  
    
    
    namespace MvcApplication1.Controllers
    {
        public class ProfileController : Controller
        {
            //配置文件中的缓存策略名称赋值给CacheProfile
            [OutputCache(CacheProfile="exampleCacheProfile")]
            public string Index()
            {
                return DateTime.Now.ToString();
            }
        }
    }
    
    

    ps:VaryByParam可以根据参数缓存不同的内容

    当VaryByParam="*": 每当表单或查询字符串参数变化时,创建一个不同的缓存版本。

    当VaryByParam="none": 不创建不同的缓存内容,不根据参数缓存不同的内容,即只有一个内容的缓存。

    当VaryByParam="参数列表": 为不同的参数创建不同的缓存版本。




    2.应用数据缓存-Cache

    应用数据缓存-Cache具体内容在这里:https://www.cnblogs.com/jsll/p/11619306.html
  • 相关阅读:
    爆炸函数 explode
    创建 hive 用户自定义函数UDF,UDTF,UDAF
    数据仓库
    elasticsearch源码分析及插件开发
    JVM垃圾回收机制
    条件阻塞Condition的应用
    java 线上问题定位工具
    都是套路:高并发系统的降级特技
    java并发编程--Runnable Callable及Future
    什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
  • 原文地址:https://www.cnblogs.com/jsll/p/11619216.html
Copyright © 2011-2022 走看看