Я настроил промежуточное ПО dotnet core для вывода заголовков Cache-Control. Я хочу кэшировать весь статический контент, но особенно несколько файлов .png. Заголовок кэша не выводится? Я использую dotnet core 1.1.1.
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?}");
});
}
Код игнорируется, о чем свидетельствует скриншот ниже.
Я также пытался явно добавить такой заголовок, но получаю ошибки, указывающие на то, что заголовок уже присутствует.
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = _ =>
{
_.Context.Request.Headers.Add("Cache-Control", "public,max-age=60");
}
});
Как-то съедается. Если я устанавливаю точку останова, код вызывается.
www.webpagetest.org
, что также указывает на то, что заголовки не устанавливаются. - person Jim   schedule 13.03.2017