我有像这样的标准WebAPI方法。这些方法使用Entity Framework 6.1从SQL Server 2012数据库中检索数据:
[ResponseType(typeof(Content))]
public async Task<IHttpActionResult> Get(int id)
{
Content content = await db.Contents.FindAsync(id);
if (content == null)
{
return NotFound();
}
return Ok(content);
}
是否有一种方法可以缓存响应,因此每次都不会访问数据库?
答案 0 :(得分:1)
答案 1 :(得分:0)
你可以这样使用
if(HttpContext.Current.Cache["myKey"] == null){
//Get the data from the database;
HttpContext.Current.Cache["myKey"] = content;
}else
return ok((Content)HttpContext.Current.Cache["myKey"]);
由于您的内容可以为null,请再保留一个缓存项以跟踪内容是否存在但为空
HttpContext.Current.Cache["IsData"] = content == null ? false : true;
现在就这样做
if(HttpContext.Current.Cache["IsData"] == null){
//Get the data from the database;
HttpContext.Current.Cache["IsData"] = content == null ? false : true;
if(content != null){
HttpContext.Current.Cache["myKey"] = content;
}
} else
return HttpContext.Current.Cache["myKey"] != null ? ok((Content)HttpContext.Current.Cache["myKey"]) : NotFound();;
此逻辑适用于您将要使用的任何类型的缓存。