1

캐시 제어 헤더를 출력하기 위해 dotnet 코어 미들웨어를 구성했습니다. 모든 정적 콘텐츠를 캐시하려고하지만, 특히 여러 .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

는 또한 명시 적으로이 같은 헤더를 추가하는 시도했다, 그러나 나는 헤더를 나타내는 오류가 이미 존재 얻을.

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

어떻게 든 먹을 것입니다. 중단 점을 설정하면 코드가 호출됩니다.

+0

강제로 다시로드 했습니까? "디스크 캐시"라고하는 것 같습니다. 정보가 논리적 인 경우이 경우 서버에 요청하지 않았을 수도 있습니다. –

+0

예, 스크린 샷을 새 것으로 바 꾸었습니다. 나는 또한 그것을 바이올린으로 검사했다. 어떻게 든 설정되지 않았다. 나는 살아있는 사이트를'www.webpagetest.org'로 테스트했는데, 헤더가 설정되어 있지 않음을 나타냅니다. – Jim

+3

당신은 응답 헤더에 추가해야합니다. – levent

답변

2

요청 헤더를 조작하려고합니다.

브라우저에는 요청 헤더가 아닌 응답 헤더가 필요합니다. 응답 헤더에 캐시 제어를 추가하십시오. 직접적으로 또는 CacheHeader 속성을 통해 상관 없습니다.

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

정말 바보 같았습니다 - 고마워요. – Jim

관련 문제