若要在ASP.NET核心应用程序中提供静态文件,请使用StaticFileMiddleware
:
app.UseStaticFiles();
这个扩展方法有两个重载。其中一个需要StaticFileOptions
实例,在本例中它是我们的朋友。此选项有一个名为OnPrepareResponse
类型的Action<StaticFileResponseContext>
。在此操作中,您可以访问HttpContext
还有更多。让我们看看将缓存生存期设置为12小时是什么样子的:
app.UseStaticFiles(new StaticFileOptions()
{
OnPrepareResponse = context =>
{
context.Context.Response.Headers["Cache-Control"] =
"private, max-age=43200";
context.Context.Response.Headers["Expires"] =
DateTime.UtcNow.AddHours(12).ToString("R");
}
});
用StaticFileResponseContext
,您还可以访问当前处理文件的文件。有了这些信息,就可以仅针对特定文件或文件类型操纵HTTP头。
这种方法确保客户机不会使用太多过时的文件,而是使用缓存的版本。我们在一个ASP.NET核心单页应用程序中使用这一点,该应用程序使用许多JavaScript和HTML模板文件。结合持续部署,我们需要确保应用程序使用最新的文件。