Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 静态文件缓存、Angular2和部署_.net_Azure_Caching - Fatal编程技术网

.net 静态文件缓存、Angular2和部署

.net 静态文件缓存、Angular2和部署,.net,azure,caching,.net,Azure,Caching,我们有一个Angular 2客户端,它运行在Azure的.NET Core上的应用程序服务下。我们最近在startup.cs中添加了以下内容: app.UseStaticFiles(new StaticFileOptions { OnPrepareResponse = ctx => { const int durationInSeconds = 86400; ct

我们有一个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,但同时,我们需要尽可能长时间地缓存文件

在如何处理这个问题上,我还没有找到很多解决方案


有共同的策略吗?

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

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

要启用缓存破坏,只需将asp append version属性设置为true

因此,我建议您可以在脚本标记中添加asp append version属性,如下所示

 <script src="~/js/site.min.js" asp-append-version="true"></script>
然后它会在js文件后面自动添加一个十六进制值

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

更改结果:


谢谢,这似乎是一种方式,但我似乎无法让它发挥作用。我已经将这样的属性添加到一个随机文件中:但是当我刷新然后转到该文件时,请求URL不会显示版本。该文件位于wwwroot文件夹和my startup hyas app.UseStaticFiles中;但还是什么都没有。有什么建议吗?我们没有从.NET Core提供任何页面,它们都是从Webpack生成的wwwroot文件夹提供的。据我所知,如果您没有从.NET Core提供任何页面,则此属性将不起作用。我建议您可以在js文件后面添加版本号。这样地。它将告诉浏览器获取js文件的新版本。更改js路径将告诉浏览器获取新的js文件。