ASP.NET MVC3缓存之一:使用页面缓存

在以前的WebForm的开发中,在页面的头部加上OutputCache即可启用页面缓存,而在MVC3中,使用了Razor模板引擎的话,该如何使用页面缓存呢?

如何启用

MVC3中要如果要启用页面缓存,在页面对应的Action前面加上一个OutputCache属性即可。

我们建一个Demo来测试一下,在此Demo中,在View的Home目录下的Index.cshtml中让页面输入当前的时间。

@{
Layout = null;
}
<! DOCTYPE html >
< html >
< head >
< title > Index </ title >
</ head >
< body >
< div >
< h2 >
现在时间:@DateTime.Now.ToString(“T”)
</ h2 >
</ div >
</ body >
</ html >

在Controllers中添加对应的Action,并加上OutputCache属性。

[HandleError]

public   class  HomeController : Controller
{
[OutputCache(Duration 
=   5 , VaryByParam  =   " none " )]
public  ActionResult Index()
{
return  View();
}
}

刷新页面即可看到页面做了一个10秒的缓存。当页面中数据不是需要实时的呈现给用户时,这样的页面缓存可以减小实时地对数据处理和请求,当然这是针对整个页面做的缓存,缓存的粒度还是比较粗的。

缓存的位置

可以通过设置缓存的Location属性,决定将缓存放置在何处。

Location可以设置的属性如下:

· Any
· Client
· Downstream
· Server
· None
· ServerAndClient

Location的默认值为Any。一般推荐将用户侧的信息存储在Client端,一些公用的信息存储在Server端。

加上Location应该像这样。

[HandleError]
public   class  HomeController : Controller
{
[OutputCache(Duration 
=   5 , VaryByParam  =   " none " , Location  =  OutputCacheLocation.Client, NoStore  =   true )]
public  ActionResult Index()
{
return  View();
}

}

缓存依赖

VaryByParam可以对缓存设置缓存依赖条件,如一个产品详细页面,可能就是根据产品ID进行缓存页面。

缓存依赖应该设置成下面这样。

[HandleError]
public   class  HomeController : Controller
{
[OutputCache(Duration 
=   int .MaxValue, VaryByParam  =   " id " )]
public  ActionResult Index()
{
return  View();
}
}

另一种通用的设置方法

当我们需要对多个Action进行统一的设置时,可以在web.config文件中统一配置后进行应用即可。

在web.config中配置下Caching节点

< caching >
< outputCacheSettings >
< outputCacheProfiles >
< add  name =”Cache1Hour”  duration =”3600″  varyByParam =”none” />
</ outputCacheProfiles >
</ outputCacheSettings >
</caching>

那么在Action上使用该配置节点即可,这样的方法对于统一管理配置信息比较方便。

[HandleError]
public   class  HomeController : Controller
{
[OutputCache(CacheProfile 
=   " Cache1Hour " )]
public  ActionResult Index()
{
return  View();
}
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值