【发布时间】:2017-03-13 06:22:46
【问题描述】:
我已将 dotnet 核心中间件配置为输出 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测试了实时站点,这也表明没有设置标题。 -
你需要添加到响应头。
标签: c# asp.net-mvc asp.net-core asp.net-core-mvc kestrel-http-server