给定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);
但我似乎记得这不是一个好主意(与线程安全有关)。
在异步方法中处理缓存的推荐方法是什么?我应该将缓存处理移动到控制器中吗?看起来很遗憾,因为缓存管理更接近数据源是有意义的。