ASP.NET MVC缓存(MVC3)

本文介绍了ASP.NET MVC3的缓存功能,包括客户端和服务器缓存,以及如何在Controller和Action上定义输出缓存。通过OutputCache Attribute,可以设置缓存期限、缓存位置,并通过CacheProfile在配置文件中灵活定义缓存设置。此外,文章还提到了缓存API的使用,以及缓存依赖和分布式缓存的概念。
摘要由CSDN通过智能技术生成

使用缓存前必须先明白一件事:缓存的设计是一门较为复杂的学问,主要考虑的问题包括:要不要缓存?要缓存哪些数据?要缓存多少数据?要缓存多久?如何更新缓存(手动还是自 动)?将缓存放在哪里?

  缓存是一个中大型系统所必须考虑的问题。为了避免每次请求都去访问后台的资源(例如数据库),我们一般会考虑将一些更新不是很 频繁的,可以重用的数据,通过一定的方式临时地保存起来,后续的请求根据情况可以直接访问这些保存起来的数据。这种机制就是所谓的缓存机制。

  根据缓存的位置,我们可以吧缓存分为:

     1、客户端缓存(缓存在用户客户端,例如:浏览器)

     2、服务器缓存(缓存在服务器中,可以缓存在内存中,也可以缓存在文件里,并且还可以进一步地区分为本地缓存和fe分布式缓存两种))

MVC3中的缓存功能

ASP.NET MVC3 继承了ASP.NET的优良传统,内置提供了缓存功能支持。主要表现为如下几个方面:

①可以直接在Controller,Action或者ChildAction上面定义输出缓存(这个做法相当于原先的页面缓存和控件缓存功能)

②支持通过CacheProfile的方式,灵活定义缓存的设置(新功能)

③支持缓存依赖,以便当外部资源发生变化时得到通知,并且更新缓存

④支持使用缓存API,还支持一些第三方的缓存方案(例如分布式缓存)

那么,下面我们就逐一来了解一下

一、范例准备

我准备了一个空白的MVC 3项目,里面创建好了一个Model类型:Employee

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. namespace MvcApplicationCacheSample.Models
  6. {  public class Employee
  7.     {
  8.         public int ID { get; set; }
  9.         public string Name { get; set; }
  10.         public string Gender { get; set; }
  11.     }
  12. }

然后,我还准备了一个HomeController

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. using MvcApplicationCacheSample.Models;
  7. namespace MvcApplicationCacheSample.Controllers
  8. {  public class HomeController : Controller
  9.     {
  10.         //
  11.         // GET: /Home/
  12.         public ActionResult Index()
  13.         {
  14.             //这里目前作为演示,是直接硬编码,实际上可能是读取数据库的数据
  15.             var employees = new[]{
  16.                 new Employee(){ID=1,Name="ares",Gender="Male"}
  17.             };
  18.             return View(employees);
  19.         }
  20.     }
  21. }
  22.  
  23.    同时,为这个Action生成了一个View
  24. @model IEnumerable<MvcApplicationCacheSample.Models.Employee>
  25. @{
  26.     ViewBag.Title = "Index";
  27. }
  28. <h2>Index</h2>
  29. <p>
  30.     @Html.ActionLink("Create New", "Create")
  31. </p>
  32. <table>
  33.     <tr><th>Name</th>
  34.           <th>Gender</th>
  35.           <th></th>
  36.     </tr>
  37. @foreach (var item in Model) {
  38.     <tr>
  39.         <td>@Html.DisplayFor(modelItem => item.Name)</td>
  40.         <td>@Html.DisplayFor(modelItem => item.Gender)</td>
  41.         <td>
  42.             @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
  43.             @Html.ActionLink("Details", "Details", new { id=item.ID }) |
  44.             @Html.ActionLink("Delete", "Delet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值