缓存前提概念:

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

MVC-Cache-1.输出缓存(Cache:[1].输出缓存2.应用程序缓存)的更多相关文章

  1. Cache及(HttpRuntime.Cache与HttpContext.Current.Cache)

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/avon520/archive/2009/11/25/4872704.aspx .NET中Cache有两种调用方式:Ht ...

  2. GPU程序缓存(GPU Program Caching)

    GPU程序缓存 翻译文章: GPU Program Caching 总览 / 为什么 因为有一个沙盒, 每一次加载页面, 我们都会转化, 编译和链接它的GPU着色器. 当然不是每一个页面都需要着色器, ...

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

    2.应用数据缓存-Cache 1.引入CacheHelper.cs CacheHelper.cs文件源码在下面; 2.介绍用法: //键 string ips = "键"; //值 ...

  4. [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能

    [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 本节导读: 上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种. ...

  5. 缓存Cache

    转载自  博客futan 这篇文章将全面介绍有关 缓存 ( 互动百科 | 维基百科 )cache以及利用PHP写缓存caching的技术. 什么是缓存Cache? 为什么人们要使用它? 缓存 Cach ...

  6. ASP.NET缓存 Cache

    缓存介绍 如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差,而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论多 ...

  7. ASP.NET状缓存Cache的应用-提高数据库读取速度

    原文:ASP.NET状缓存Cache的应用-提高数据库读取速度 一. Cache概述       既然缓存中的数据其实是来自数据库的,那么缓存中的数据如何和数据库进行同步呢?一般来说,缓存中应该存放改 ...

  8. 网页的缓存Cache与控制

    什么是缓存 Cache? 缓存位于客户端与服务器之间, 或者服务器与服务器之间.它决定是否保存所获资源的副本,以及如何使用副本,何时更新副本,这里所说的资源包括页面的HTML, 图片,文件等等. 使用 ...

  9. asp.net,缓存Cache

    缓存Cache: >直接使用Cache["content"],缓存与Session不同,所有用户都可以共享.永不过期,由服务器自己维护,当内存不够时,会将老的缓存释放掉. & ...

随机推荐

  1. Qt bug

    1.Qt5.2.1不支持QQuickwidget来承载qml 2.Qt5.12以及以上,不支持跨线程调用数据库连接 3.线程A不断产生sql语句,需要让两个数据库分别执行这个sql语句.所以在线程A中 ...

  2. ios开发注意事项小总结

    一.LaunchScreen LaunchScreen产生原因:代替之前的启动图片 好处: 1.可以展示更多的东西 2.可以只需要出一个尺寸的图片. 启动图片的优先级 启动图片 < Launch ...

  3. 如何让winrar5压缩的文件能用低版本winrar打开

    https://jingyan.baidu.com/article/39810a2348ab24b636fda681.html 在压缩文件格式选项处点选[RAR4]选项,即之前版本的winrar支持的 ...

  4. 解决no module named setuptools

    To install setuptools on Debian: sudo apt-get install python-setuptools For Python 3.x: sudo apt-get ...

  5. 解决ubuntu的firefox上网速度慢【转】

    在ubuntu上用firefox上网十分慢,但是在切换了chrome后发现上网速度很快,是解析域名上出现了问题,所以要为FF设置DNS缓存以提高速度.(在WIN下这个是自动设置好的,在ubuntu下需 ...

  6. mysql存储过程demo

    #删除存储过程 -- drop procedure if exists add_test; CREATE PROCEDURE add_test() begin #定义变量 declare client ...

  7. Intellij热部署插件JRebel的详细配置及图解

    参考博客地址:https://blog.csdn.net/nyotengu/article/details/80629631 参考博客地址:https://blog.csdn.net/weixin_4 ...

  8. Appium移动自动化测试-----(五) java-client安装与测试

    前提条件 当你点击这一章时,说明你是打算使用 Java 语言编写 appium 自动化测试脚本的. 1.安装 Java 环境 ,我想这一步你已经搞定了 2.安装 IntelliJ IDEA , 当然, ...

  9. Spyder中代码提示功能添加

    问题描述:Spyder中编写python程序时,无函数智能提示.如想要输入np.reshape,无reshape提示 预期目标:输入 np.  然后智能提示reshape 解决方法: 第一步:进入本地 ...

  10. 【HC89S003F4开发板】 6crc校验

    HC89S003F4开发板crc校验 前言 第一次用有带crc的mcu 使用资料自带的demo @实现效果 通过PC向MCU发送5个8位数据,MCU返回CRC校验值 void main() { /** ...