gpt4 book ai didi

c# - dotnet 核心设置 Cache-Control 无效

转载 作者:行者123 更新时间:2023-11-30 16:45:06 28 4
gpt4 key购买 nike

我已将 dotnet 核心中间件配置为输出 Cache-Control header 。我希望缓存所有静态内容,但最特别的是几个 .png 文件。 缓存 header 未输出?我使用的是 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?}");
});
}

代码被忽略,如下面的屏幕截图所示。

enter image description here

我也试过像这样显式添加 header ,但我收到错误提示 header 已经存在。

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

不知怎么的,它被吃掉了。如果我设置断点,代码就会被调用。

最佳答案

你试图操纵请求 header 。

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

浏览器需要的是响应头,而不是请求头。将缓存控制添加到响应 header 。无论是直接还是通过 CacheHeader 属性都没有关系。

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

关于c# - dotnet 核心设置 Cache-Control 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42757634/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com