ASP.NET Core 2.0 Web API响应缓存



我正在尝试使用"Microsoft.AspNetCore.ResponseCaching"包在我的web api中实现响应缓存。

我正在使用Postman来测试应用程序和验证标头等

正确的标头是用指定的最大年龄生成的,但poster似乎从api请求响应,而不是使用缓存。响应时间没有任何变化,如果我调试控制器,我可以看到它每次都会被请求击中。

启动类ConfigureServices(以及其他内容(:

services.AddResponseCaching();

启动类配置(连同其他东西(:

app.UseResponseCaching();
app.UseMvc();

控制器动作:

[HttpGet("{employeeNr}", Name = EmployeeAction)]
[ResponseCache(Duration = 50)]
[Produces(typeof(EmployeeDto))]
public async Task<IActionResult> GetEmployee(SpecificEmployeeParameters parameters)
{
if (!await _employeeRepository.EmployeeExists(parameters.EmployeeNr)) return NotFound();
if (!_typeHelperService.TypeHasProperties<EmployeeDto>(parameters.Fields))
return BadRequest();
var entity = await _employeeRepository.GetEmployee(parameters.EmployeeNr);
var result = Mapper.Map<EmployeeDto>(entity);
return Ok(result.ShapeData(parameters.Fields));
}

来自邮差的响应标头:

cache-control →private,max-age=50
content-type →application/json; charset=utf-8
date →Wed, 30 Aug 2017 11:53:06 GMT

修复了该问题。上面的代码是可以的!Postman正在通过设置阻止缓存。

要修复此行为,请转到Postman设置:

General -> Headers -> Send no-cache header -> Set to "OFF"

最新更新