gpt4 book ai didi

c# - 如何为 UseStaticFiles 引入更多扩展

转载 作者:行者123 更新时间:2023-11-30 22:51:42 31 4
gpt4 key购买 nike

我使用的是Asp.Net Core 2.2,我总是使用下面的代码作为静态文件的缓存控制:

var cachePeriod = env.IsDevelopment() ? "600" : "2592000";
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = ctx =>
{
ctx.Context.Response.Headers.Append("Cache-Control", $"public, max-age={cachePeriod}");
}
});

然而这次我也使用了 .webp 图像,我注意到缓存不适用于此扩展。如何添加 UseStaticFiles() 使用的扩展?

最佳答案

Cache-Control header 控制请求级别的缓存。因此,任何用作对来自 UseStaticFiles 的请求的响应的文件都将被缓存。

这里的问题是,UseStaticFiles 无法将 webp 的 mime 类型识别为由 StaticFileHandler 处理的类型,您可以通过使用 FileExtensionContentTypeProvider 并提供MIME 类型的 IIS 将其理解为 StaticFile 并将该提供程序传递到 StaticFileOptions 或允许 IIS 提供未知文件类型(不太安全,但更容易/更快):

var cachePeriod = env.IsDevelopment() ? "600" : "2592000";
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = ctx =>
{
ctx.Context.Response.Headers.Append("Cache-Control", $"public, max-age={cachePeriod}");
},
ServeUnknownFileTypes = true

);

参见 Static files in ASP.NET Core有关使用 FileExtensionContentTypeProvider 添加 MIME 类型的更多信息。另请引用 Adding Static Content MIME Mappings有关如何修改 web.config 以将 .webp 文件扩展名映射到 staticContent(静态文件处理程序)文件处理程序的示例。

关于c# - 如何为 UseStaticFiles 引入更多扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58940366/

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