我已经配置了dotnet核心中间件来输出Cache-Control标头。我希望缓存所有静态内容,但最重要的是几个.png文件。 缓存标头 未输出?我使用的是dotnet核心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");
}
});
不知怎的,它被吃掉了。如果我设置了断点,则会调用代码。
答案 0 :(得分:2)
你试图操纵请求标题。
class JmsExposerController {
@Resource
private JmsPersister persister;
...
...
}
浏览器需要响应标头,而不是请求标头。将缓存控制添加到响应头。无论是直接还是通过CacheHeader属性都无关紧要。
var headers = _.Context.Request.GetTypedHeaders();
headers.CacheControl = new CacheControlHeaderValue
{
MaxAge = TimeSpan.FromHours(12)
};