1

キャッシュコントロールヘッダーを出力するために、ドットネットコアミドルウェアを設定しました。すべての静的コンテンツをキャッシュすることを検討していますが、特にいくつかの.pngファイルをキャッシュします。 キャッシュヘッダーが出力されていませんか?私はdotnet core 1.1.1を使用しています。dotnet core設定キャッシュコントロールは効果がありません

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    loggerFactory.AddConsole(this.Configuration.GetSection("Logging")); 
    loggerFactory.AddDebug(); 
    app.UseStaticFiles(new StaticFileOptions 
     { 
      OnPrepareResponse = _ => 
      { 
       var headers = _.Context.Request.GetTypedHeaders(); 
       headers.CacheControl = new CacheControlHeaderValue 
       { 
        MaxAge = TimeSpan.FromHours(12) 
       }; 
      } 
     }); 

    if (env.IsDevelopment()) 
    { 
     app.UseDeveloperExceptionPage(); 
     app.UseBrowserLink(); 
    } 
    else 
    { 
     app.UseExceptionHandler("/Home/Error"); 
    } 

    app.UseIdentity(); 

    // Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715 
    app.UseMvc(routes => 
    { 
     routes.MapRoute(
      "default", 
      "{controller=Site}/{action=Site}/{id?}"); 
    }); 
} 

コードは次のスクリーンショットで示されているように無視されています。

enter image description here

Iはまた、明示的にこのようなヘッダを追加しようとしているが、私は、ヘッダを示すエラーが既に存在し得ます。

app.UseStaticFiles(new StaticFileOptions 
{ 
    OnPrepareResponse = _ => 
    { 
     _.Context.Request.Headers.Add("Cache-Control", "public,max-age=60"); 
    } 
}); 

何とか食べてしまいます。ブレークポイントを設定すると、コードが呼び出されます。

+0

強制的にリロードしましたか?それは "ディスクキャッシュ"と思われるので、もし情報が論理的であるならば、この場合サーバに尋ねることさえなかっただろう。 –

+0

はい、私はスクリーンショットを新しいものに置き換えました。私はまた、それをチェックしている、何とかそれは設定されていません。私はライブサイトを 'www.webpagetest.org'でテストしました。これはヘッダーが設定されていないことを示しています。 – Jim

+3

あなたは応答ヘッダーに追加する必要があります。 – levent

答えて

2

リクエストヘッダーを操作しようとしています。

  var headers = _.Context.Request.GetTypedHeaders(); 
      headers.CacheControl = new CacheControlHeaderValue 
      { 
       MaxAge = TimeSpan.FromHours(12) 
      }; 

ブラウザにはリクエストヘッダではなくレスポンスヘッダが必要です。応答ヘッダーにキャッシュ制御を追加します。直接かCacheHeaderプロパティかどうかは関係ありません。

_.Context.Response.Headers.Append("Cache-Control", string.Format("public,max-age={0}", TimeSpan.FromHours(12).TotalSeconds)); 
+0

それは本当に愚かだった - ありがとう。 – Jim

関連する問題