C# 缓存Asp.NETWebAPI
我试图在我正在实现的api中捕获一个方法。我已经创建了一个基于本文()的属性 我直接从chrome调用这个方法。但是服务器总是在执行查询,我不能让服务器返回NotModified。我做错了什么 ---------------------------------------------------------------编辑-------------------------------------------------------------- 以下是我通话的标题:C# 缓存Asp.NETWebAPI,c#,caching,asp.net-web-api,asp.net-web-api2,C#,Caching,Asp.net Web Api,Asp.net Web Api2,我试图在我正在实现的api中捕获一个方法。我已经创建了一个基于本文()的属性 我直接从chrome调用这个方法。但是服务器总是在执行查询,我不能让服务器返回NotModified。我做错了什么 ---------------------------------------------------------------编辑-------------------------------------------------------------- 以下是我通话的标题: 但是,Web API当前不支
但是,Web API当前不支持输出缓存,有人已经不辞辛劳地构建了一个库,它可以完全满足您的需要-。您是否检查了标题以查看Web Api返回了什么?@DavidG我添加了标题捕获。我注意到,Web Api中的输出缓存与设置标题一样简单,有人已经自由地制作了一个支持它的。@jvrdelafuent您的浏览器正在发送
缓存控制:max age=0
,这实际上是在告诉服务器我的数据过时了,给我一些新的东西
由@James链接的库看起来很完整,我想先试试。
[Route("")]
[CacheControl(MaxAge = 160)]
public IEnumerable<Club> GetAll()
{
return _clubService.GetAll();
}
public class CacheControlAttribute : ActionFilterAttribute
{
public int MaxAge { get; set; }
public CacheControlAttribute()
{
MaxAge = 160;
}
public override void OnActionExecuted(HttpActionExecutedContext context)
{
context.Response.Headers.CacheControl = new CacheControlHeaderValue
{
Public = true,
MaxAge = TimeSpan.FromSeconds(MaxAge)
};
base.OnActionExecuted(context);
}
}