静态文件缓存,Angular2和部署

时间:2017-07-20 22:34:50

标签: .net azure caching

我们有一个Angular 2客户端,可以在Azure服务器上的.NET Core上运行。我们最近在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,但同时我们需要尽可能长时间地缓存文件。

我还没有找到解决方法来解决这个问题。

有共同的策略吗?

1 个答案:

答案 0 :(得分:1)

据我所知,asp.net核心支持缓存破坏。

  

缓存清除是将某种形式的文件版本哈希附加到JavaScript和CSS文件等资源的文件名的过程。这样做的性能优势是我们可以告诉浏览器无限期地缓存这些文件,而不必担心客户端在文件更改时没有获得最新版本。由于资源名称在文件内容更改时发生更改,因此始终会下载更新的文件。

     

要启用缓存清除,只需将asp-append-version属性设置为true。

所以我建议你可以在脚本标签中添加asp-append-version属性,如下所示。

sudo apt-get update
sudo apt-get install google-chrome-stable

然后它会在js文件后面自动添加一个十六进制值。

enter image description here

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

更改结果:

enter image description here