Mr.*_*ast 8 caching asp.net-core asp.net-core-webapi
我正在尝试使用"Microsoft.AspNetCore.ResponseCaching"包在我的web api中实现响应缓存.
我正在使用Postman测试应用程序并验证标题等.
使用指定的max-age生成正确的标头,但邮递员似乎从api请求响应而不使用缓存.响应时间根本没有变化,如果我调试控制器,我可以看到它每次都被请求命中.
启动类ConfigureServices(以及其他内容):
services.AddResponseCaching();
Run Code Online (Sandbox Code Playgroud)
启动类配置(以及其他内容):
app.UseResponseCaching();
app.UseMvc();
Run Code Online (Sandbox Code Playgroud)
控制器动作:
[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));
}
Run Code Online (Sandbox Code Playgroud)
邮递员的回复标题:
cache-control ?private,max-age=50
content-type ?application/json; charset=utf-8
date ?Wed, 30 Aug 2017 11:53:06 GMT
Run Code Online (Sandbox Code Playgroud)
修复了这个问题.上面的代码没问题!邮差通过设置防止缓存.
要解决此问题,请转到邮递员设置:
General -> Headers -> Send no-cache header -> Set to "OFF"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5193 次 |
| 最近记录: |