MVC输出缓存(Cache:1.输出缓存2.应用程序缓存)

Posted jsll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC输出缓存(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="参数列表": 为不同的参数创建不同的缓存版本。

以上是关于MVC输出缓存(Cache:1.输出缓存2.应用程序缓存)的主要内容,如果未能解决你的问题,请参考以下文章

如何缓存将图像返回到asp.net mvc中的视图的操作方法的输出?

ASP.NET MVC 视图和控制器输出缓存

高速输出-我们戏说缓存

cache 缓存的处理

如何使用缓存

.net带有参数的页面怎么进行缓存,缓存后可浏览正确页面