在Angular环境下强制浏览器清除缓存

8

有一个流行的问题是如何在VanillaJS应用程序中强制清除浏览器缓存,一般共识是将.js脚本的名称或脚本参数设置为新值:强制浏览器清除缓存

我该如何在Angular(目前为5.1版本的AngularCLI/Webpack构建)中实现这一点,以便每次在生产环境中发布代码(使用AOT时),都会构建一个新版本? 我想使用日期哈希代替索引,但主要问题是:在哪里可以设置它(例如脚本名称/参数)?在开发中,当CLI负责重建应用程序时,这不是问题,只有在生产中才是!


这是我在Angular中所做的事情:https://dev59.com/n1MI5IYBdhLWcg3wxeW3#61473275 - Alejo JM
1个回答

16
通过将构建命令设置为目标生产环境ng build --target=production,CLI会自动对你的js文件进行哈希。这里是文档。如果你想在开发环境下进行哈希,也可以手动设置命令ng build --output-hashing=all

谢谢。我已经做出了更改,但需要先检查一下是否有效,之后会接受你的答案 :) - Phil
但是我该如何强制浏览器在创建新版本时刷新资产文件呢? - CularBytes
@CularBytes 看起来Angular CLI没有为所有资产进行哈希处理(请参见此[线程](https://github.com/angular/angular-cli/issues/4212))。 您可以更新webpack配置以查找您的资产网址并添加哈希或创建一个管道来添加哈希。(例如,假设您有一个管道,该管道拉出您的package.json版本并将其附加到URL上。每次更新版本并部署资产时,都会使缓存失效) - LLai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接