我承担了对网站进行编程的任务,并且对网站创建还是陌生的。

该网站必须显示行程概述,并允许导航到单个行程详细信息以及该行程的位置。我们的数据库层将返回一个包含行程及其所有位置的列表:

class Trip { List<Place> places; }
List<Trip> trip = datalayer.GetTrips();

因此,该请求将已经包含行程和所有地点。当我们要显示单程旅行或地点时,不必去数据库。将行程列表存储在高速缓存中,然后在显示行程或其位置之一时使用高速缓存是否合适?

示例代码:
//GET /Trips
public ActionResult Index()
{
    List<Trip> tripList;
    _dbLayer.GetTrips(out tripList);
    HttpContext.Current.Cache.["Trips-" + clientId] = tripList;
    return View(tripList);
}

//GET: /Trips/Details/5
public ActionResult Detail(int id)
{
    List<Trip> tripList = HttpContext.Current.Cache.["Trips-" + clientId];
    if(tripList != null)
    {
      Trip trip = tripList.SingleOrDefault(i => i.TechNr == id)
      return View(trip);
    }
    else
    {
       return View("NotFound");
    }
 }

最佳答案

如果您使用的是Linq to SQL datacontext类,它将自动为您缓存数据。我建议将缓存保留在这一层,而不是在 Controller 中缓存。

10-06 03:40