ASP.NET MVC 3 网站优化总结(四)使用缓存


适当的使用缓存对一个网站性能的提升是不言而喻的,今天就让我们看看在 ASP.NET MVC 3 中输出缓存,同ASP.NET MVC 3 网站优化总结(一) 使用 Gzip 压缩类似,在 ASP.NET MVC 3 中输出缓存时在要设置缓存的 Action 上加添加[OutputCache]即可。

比如在东奎博客中 RecentArticle() 得到最新发表的10篇文章,设置缓存方法如下:

[ChildActionOnly]
[OutputCache(Duration = 60 * 10, VaryByParam = "none")]
public ActionResult RecentArticle()
{
   
return PartialView("RecentArticle",
        db
.Articles.OrderByDescending(m => m.ID).Take(10)
   
);
}

上边的代码块返回 PartialView RecentArticle,缓存时间设置为10分钟,关于局部视图(分部视图?可见不翻译最好)就不多说了。VaryByParm 的意思从词组就可以理解,“通过参数名变化”,分别可设置为“none”、“指定的参数名”和“*”。“none” 表示一直缓存同样的内容,其他的就不难理解了。

通过上边的设置,在10分钟内,当用户刷新页面、浏览其它文章等操作时不会再次调用 Controller 中的 RecentArticle(),减少了不必要的数据库请求,提高了网站的运行效率。

我们可以在 Web.config 文件里设置缓存,这样做的好处是可以快速更改缓存时间、避免缓存名冲突等。如下:

<system.web>
   
<caching>
       
<outputCacheSettings>
           
<outputCacheProfiles>
               
<add name="home" duration="60" varyByParam="none" />
               
<!--more-->
           
</outputCacheProfiles>
       
</outputCacheSettings>
   
</caching>
</system.web>

使用如下:

[OutputCache(CacheProfile="home",VaryByParam="id")]
public ActionResult Index(string id)
{
   
return View();
}

这种方法在child actions 会报“Duration must be a positive number”的错误,如在“RecentArticle()”上使用。查看 ASP.NET MVC 3 的源代码可以发现在处理 child actions 时 CacheProfile 属性是被忽略且无效的,可见这里抛出的异常描述不太准确。

关于静态内容的缓存在本文不再做介绍,如图片、CSS、和 JS 文件的缓存,如果你不清楚的话,可以参考下 IIS7 中设置浏览器缓存这篇文章。在 ASP.NET MVC 3 中设置缓存变得简单且灵活,通过在 ASP.NET MVC 3 设置缓存,相信我们的网站在性能上又上升了一个台阶。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值