我们正在从ASP.NET Core 2.1 Web后端的wwwroot文件夹提供基于Angular SPA的生产捆绑包。 否则,此ASP.NET Core Web后端仅充当SPA的REST API。
这样做,我在Startup.cs中将以下行添加到ConfigureServices方法中:
services.AddSpaStaticFiles(config => config.RootPath = "wwwroot");
并将其添加到Configure方法
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseMvc();
app.UseSpa(spa =>
{
spa.Options.SourcePath = "wwwroot";
});
这有效,但是当我在wwwroot中更新捆绑软件时,我注意到客户端并不总是选择新版本。通常,他们不得不强制在浏览器中刷新页面以获得最新版本。
AFAIK这与浏览器缓存有关。
当我部署SPA捆绑包的新版本时,如何控制该缓存的过期,以便客户端浏览器立即获取新版本?
答案 0 :(得分:2)
您可以使用此代码清除缓存
app.UseSpaStaticFiles(new StaticFileOptions()
{
OnPrepareResponse = ctx =>
{
var headers = ctx.Context.Response.GetTypedHeaders();
headers.CacheControl = new CacheControlHeaderValue
{
Public = true,
MaxAge = TimeSpan.FromDays(0)
};
}
});
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions()
{
OnPrepareResponse = ctx => {
var headers = ctx.Context.Response.GetTypedHeaders();
headers.CacheControl = new CacheControlHeaderValue
{
Public = true,
MaxAge = TimeSpan.FromDays(0)
};
}
};
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});