我承担了对网站进行编程的任务,并且对网站创建还是陌生的。
该网站必须显示行程概述,并允许导航到单个行程详细信息以及该行程的位置。我们的数据库层将返回一个包含行程及其所有位置的列表:
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 中缓存。