我有一个Angular 8应用程序,在部署新版本时遇到了缓存问题。基本上,我注意到,当使用 ng build --prod
జజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ outputHashing
选项设置为 all
在我 angular.json
. 因此,所有由 ng build
在它们的名字中都有一个内容哈希,这有两个原因,一是浏览器可以安全地长期缓存我的应用程序的文件(如果在新版本中文件的内容发生变化,名称也会发生变化,因此所有客户端都会重新加载文件)。
(注意:index.html永远不会被缓存)
所以这看起来很有效率。
现在的问题是,并不是所有的文件都有这个破缓存的名字。在 angular.json
只是在构建过程中 "按原样 "复制。因此,如果我发布了一个新版本的应用程序,我不能保证客户会使用最新版本的资产。
这些资产包括JSON翻译文件(由ngx-translate使用),图像(直接在应用程序的模板中引用)以及其他东西。
我在Stack Overflow和GitHub上读了很多关于这个问题的文章,但是没有找到一个足够好的解决方案。
我试着使用了一个 @angular-builders/custom-webpack:browser
的自定义Webpack配置,使用 html-loader
和 file-loader
来重命名这些文件以及源代码中对它们的每个引用,但这似乎并不奏效。
是否可以在Angular应用中对assets文件进行缓存破译命名?如果可以,推荐的方法是什么,如何操作?
我很好奇为什么这对你没有用。
我试着用@angular -buuilderscustom -webpack:browser 和一个自定义的Webpack配置,使用html -loader和file -loader来重命名文件以及源代码中对它们的每一个引用,但似乎不起作用。
我很乐意在另一个问题中研究这个问题。这就是我们采取的方法。