2017-08-30 17 views
4

「Microsoft.AspNetCore.ResponseCaching」パッケージを使用してWeb APIでレスポンスキャッシングを実装しようとしています。私は正しいヘッダが指定された最大エージングが、郵便配達で生成されたなどASP.NET Core 2.0 Web APIレスポンスキャッシング

ヘッダをアプリケーションをテストして検証するために郵便配達を使用しています

は、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 

答えて

5

問題を修正しました。上記のコードは大丈夫です! Postmanは設定によるキャッシングを防止していました。この動作を修正するために

はポストマンセッティングに行く:

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

私もこれに遭遇しました。ブラウザの要求にno-cache/no-storeヘッダーがある場合、RFCはこの動作をキャッシュに必要としますが、実際にはISPまたはCDNのような中間キャッシュには意味があります。コンテンツの所有者であり、変更されていないことがわかっている場合、サーバーは再レンダリングを強制されるべきではありません。ここでは、ASP.Net CoreのResponseCacheのデフォルトの動作を無効にできる拡張機能を示します。github.com/speige/AspNetCore.ResponseCaching.Extensions nuget.org/packages/AspNetCore.ResponseCaching.Extensions –

関連する問題