ASP.NET Core 2.0 Web API响应缓存

时间:2017-08-30 12:10:11

标签: caching asp.net-core asp.net-core-webapi

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

我正在使用Postman测试应用程序并验证标题等。

使用指定的max-age生成正确的标头但postman似乎从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));
    }

Postman的回复标题:

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

1 个答案:

答案 0 :(得分:7)

修正了问题。上面的代码没问题! 邮差通过一种设置阻止了缓存。

要解决此问题,请转到邮递员设置:

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