當我們建立一個 ASP.NET Core Web 應用程式專案的時候,預設在 Startup.cs
中就會呼叫 UseStaticFiles()
使用 StaticFileMiddleware,讓專案中的靜態檔案可以透過 HTTP 被存取到,現在我想要將這些靜態檔案 Cache 在 CDN 上,我需要在 Response Headers 裡面加上 Cache-Control: public, max-age=n
,我們來看要怎麼做?
我們可以利用 UseStaticFiles() 的一個多載方法 UseStaticFiles(StaticFileOptions options)
,傳入 StaticFileOptions
參數,並指定 OnPrepareResponse
屬性的值,在 Response Headers 中加入 Cache-Control 跟要設定的值。
public class Startup
{
// ...
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
app.UseStaticFiles(
new StaticFileOptions
{
OnPrepareResponse = ctx => { ctx.Context.Response.Headers[HeaderNames.CacheControl] = "public, max-age=86400"; }
});
// ...
}
}
這樣就大功告成了