ASP MVC异步控制器和HttpContext.Cache - 正确的模式?

时间:2015-05-21 15:38:08

标签: asp.net-mvc-4 caching async-await

给定ASP MVC控制器上的异步操作方法和获取某些数据的异步方法:

public async Task<ActionResult> Index()
{
    var apiClient = new apiClient();
    var data = await apiClient.GetDataAsync(id);

我希望GetDataAsync将结果存储为Cache项,因此下次不必从外部api请求。

我有时可以通过传递对缓存对象的引用来实现这一点,(即使从我认为是起始线程的传递中经常莫名其妙地为null。我猜不能是起始线程吗?)。

var data = await apiClient.GetDataAsync(id, System.Web.HttpContext.Current.Cache);

但我似乎记得这不是一个好主意(与线程安全有关)。

在异步方法中处理缓存的推荐方法是什么?我应该将缓存处理移动到控制器中吗?看起来很遗憾,因为缓存管理更接近数据源是有意义的。

0 个答案:

没有答案