【发布时间】:2014-05-20 12:10:44
【问题描述】:
我有 MVC 4 Web 应用程序,它包含一个 API 控制器,用于针对数据源进行 CRUD 操作。为了简化我尝试做的事情,我将使用电影存储库作为示例。数据源包含一个名为 MovieData(Title,Genre,MovieId 等) 的类,其中包含 GetAllMovies、Update、Create、GetMovieByid 方法。调用数据源的成本很高,所以我想实现某种缓存,尤其是在电影列表的检索上。每天更新原始数据源,并且只更新一次。
实现这一点的最佳方法是什么?我应该为此使用 HTTPContext.Current.Cache,还是有另一种(更好的)方法?
public class MovieController : ApiController
{
private const string CacheKey = "MovieStore";
private MovieDataSource movieRepository;
public MovieController()
{
//this.movieRepository = new MovieDataSource();
var ctx = HttpContext.Current;
if (ctx != null)
{
if (ctx.Cache[CacheKey] == null)
{
this.movieRepository = new MovieDataSource();
ctx.Cache[CacheKey] = movieRepository;
}
}
}}
或者我应该简单地调用movieRepository.GetAllMovies,创建一个新列表,将所有电影添加到该列表中,然后对该列表执行所有CRUD 操作。然后在一天结束时,用我创建的缓存列表更新数据源?这应该很简单,我只是想找到在 MVC 4 中实现它的“最佳实践”方式。
谢谢
【问题讨论】:
标签: c# asp.net-mvc caching asp.net-web-api httpcontext