我们有一个Angular 2客户端,它运行在Azure的.NET核心上的一个应用程序服务下。我们最近在startup.cs中添加了以下内容:
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = ctx =>
{
const int durationInSeconds = 86400;
ctx.Context.Response.Headers[HeaderNames.CacheControl] =
"public,max-age=" + durationInSeconds;
}
});这将缓存静态文件(包括各种bundle.js文件)1天。虽然这会给我们带来性能上的好处,但我们在部署新版本时会遇到问题。我们显然不能告诉每个用户尝试CTRL + F5,但同时,我们需要尽可能长时间地缓存文件。
在如何处理这个问题上,我找不到太多的解决方案。
是否有共同的策略?
发布于 2017-07-21 10:15:52
据我所知,asp.net内核支持缓存崩溃。
CSS缓存崩溃是将某种形式的文件版本散列附加到JavaScript和
文件等资源的文件名中的过程。这样做的性能优势是,我们可以告诉浏览器无限期地缓存这些文件,而不必担心客户端在文件更改时无法获得最新版本。由于资源名称会随着文件内容的更改而更改,因此始终会下载更新后的文件。
要启用缓存破坏,只需将asp-append-version属性设置为true即可。
因此,我建议您可以在script标记中添加asp-append-version属性,如下所示。
<script src="~/js/site.min.js" asp-append-version="true"></script>然后它会在js文件后面自动添加一个十六进制值。

如果您更改js文件,它将更改js路径,以告知客户端获取新的js文件。
更改后的结果:

https://stackoverflow.com/questions/45226261
复制相似问题