缓存前提概念:
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="参数列表": 为不同的参数创建不同的缓存版本。
原文地址:https://www.cnblogs.com/jsll/p/11619216.html
时间: 2024-10-03 21:02:44