Asp.net core 學習筆記 ( IIS, static file 性能優化 )html
官網webpack
一般 static files 會帶上 zip, cache, minifygit
zip 和 cache ASP.NET Core 都有 build-in 的, JS, CSS minify 用 Webpack, HTML 用 WebMarkupMingithub
public static class MiniCompressionCacheServiceCollectionExtensions { public static IServiceCollection AddMiniCompressionCache(this IServiceCollection services) { services.AddResponseCompression(options => { options.EnableForHttps = true; }); var fileExtensionContentTypeProvider = new FileExtensionContentTypeProvider(); fileExtensionContentTypeProvider.Mappings[".webmanifest"] = "application/manifest+json"; services.Configure<StaticFileOptions>(options => { options.ContentTypeProvider = fileExtensionContentTypeProvider; options.OnPrepareResponse = ctx => { var cachePeriod = TimeSpan.FromDays(365 * 15).TotalSeconds.ToString(); ctx.Context.Response.Headers.Append("Cache-Control", $"public, max-age={cachePeriod}"); }; }); services.AddWebMarkupMin().AddHtmlMinification(); return services; } }
startup.cs > ConfigureServicesweb
services.AddMiniCompressionCache();
startup.cs > Configurejson
app.UseStaticFiles();
這樣就能夠了.api
參考:安全
ASP.NET Core 2.0 - Serving files with no extension性能優化
How can you use multiple directories for static files in an aspnet core app?app
這個需求有點奇葩哦. 我是由於用 face-api.js, 它的 models files 是沒有 extension 的...
解決方法是在 startup.cs > Configure 加多一個 UseStaticFiles, 而後指定路徑來特別處理. ServeUnknownFileTypes 是有安全隱患的, 因此要當心用哦.
app.UseStaticFiles(); app.UseStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider(System.IO.Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/face-api-models")), RequestPath = "/face-api-models", ServeUnknownFileTypes = true, });