我正在尝试使用“ Microsoft.AspNetCore.ResponseCaching”包在我的Web api中实现响应缓存。
我正在使用Postman测试应用程序并验证标头等。
正确的标头是使用指定的最大年龄生成的,但是邮递员似乎从api请求响应,而不使用缓存。响应时间完全没有变化,如果我调试控制器,我会看到它每次都被请求击中。
启动类ConfigureServices(以及其他内容):
services.AddResponseCaching();
启动类Configure(以及其他内容):
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
解决了该问题。上面的代码很好!邮递员通过设置来阻止缓存。
要解决此问题,请转到邮递员设置:
General -> Headers -> Send no-cache header -> Set to "OFF"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句