我以为我已经成功地缓存破坏了 angular-cli 的--output-hashing选项设置all为确保用户获得最新的块/更新。我意识到这并不总是适用于延迟加载的模块。
如果我只对延迟加载模块 + 构建 + 部署到 IIS进行更改,并转到属于延迟加载模块的 URL,那么我会按预期获得最新更改。
但是,如果我关闭并重新打开浏览器并转到不属于延迟加载模块的 URL,然后单击将我带到延迟加载模块的链接,则不会观察到最新更改。
几乎就像浏览器假设每当我从未更改的模块进入应用程序时没有任何更改,并且稍后在我访问已更改的模块时不会选择新块。
更奇怪的是,当我尝试复制问题以提供一些屏幕截图时,问题就消失了。
有没有其他人遇到过使用输出哈希与缓存破坏不一致的情况?
编辑:
进一步调查后,事实证明,如果我转到我网站的着陆页 [IP 地址]:[端口],那么 index.html 来自缓存。
相反,如果我转到任何其他路由 [IP 地址]:[端口]/[路由],那么 index.html 来自服务器。
由于 index.html 指向 inline.(hash).bundle.js,后者又指向延迟加载的模块,因此获取 index.html 的旧副本会导致获取旧版本的 inline.js 和其他模块。
我尝试添加<meta http-equiv="expires" content="0" />到 index.html 并清除浏览器缓存,但仍然从缓存中获取文件。
我也尝试在 web.config 中添加一个部分,但这也不起作用。
如何确保 index.html 始终来自服务器?