【发布时间】:2014-12-02 15:58:50
【问题描述】:
我必须在 asp.net web api 方法中实现缓存,因为我正在从第三方数据源访问数据并且调用第三方数据源的成本很高,而且数据每 24 小时才会更新一次。所以在 Strathweb 的帮助下.我已经实现了这样的缓存
/// <summary>
/// Returns the sorted list of movies
/// </summary>
/// <returns>Collection of Movies</returns>
[CacheOutput(ClientTimeSpan = 86400, ServerTimeSpan =86400)]
public IEnumerable<Movie> Get()
{
return repository.GetMovies().OrderBy(c => c.MovieId);
}
/// <summary>
/// Returns a movie
/// </summary>
/// <param name="movie">movieId</param>
/// <returns>Movie</returns>
[CacheOutput(ClientTimeSpan = 86400, ServerTimeSpan = 86400)]
public Movie Get(int movieId)
{
var movie = repository.GetMovieById(movieId);
if (movie == null)
{
var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.NotFound)
{
Content = new StringContent(string.Format("No movie with ID = {0}", movieId)),
ReasonPhrase = "Movie ID Not Found"
};
throw new HttpResponseException(httpResponseMessage);
}
return movie;
}
但是在 Strathweb 中,我看到了两个属性,一个是 ClientTimeSpan,另一个是 ServerTimeSpan。我不确定何时使用 ClientTimeSpan 以及何时使用 ServerTimeSpan。最简单的说法是,我想了解何时使用服务器端缓存以及何时使用使用客户端缓存以及两者之间的差异。
【问题讨论】:
-
Similar Question on SO 可以帮助你。
标签: asp.net asp.net-mvc caching asp.net-web-api asp.net-web-api2