我正在开发 Angular2 项目,并遇到了 Chrome 缓存 HTML 模板的问题。这对于开发来说不是问题,因为我可以在 Chrome 开发模式下忽略缓存。
但这对于客户和他的用户来说确实是一个痛苦...... 我尝试将以下内容添加到 templateURL:
templateUrl: './pages/add-financial-deal.html?v=201610070907',
更新的 URL 已添加到自动生成的 JS 中,但即使我单击 Shift + F5,Chrome 仍然使用缓存的 JS。结账截图:http://screencast.com/t/bc2nf4zVcm
有什么可靠的方法让它工作吗?
谢谢
编辑:12 月 2 日
我终于弄清楚那里发生了什么。尽管我已经在 TS 中添加了更改(并且自动生成的 JS 也已更新),但 Chrome 仍然从内存缓存加载文件 - screencast.com/t/FGuaMXaKL 。我已经等了 30 分钟了,但它仍然加载内存中的缓存文件。这是有意的行为吗?如何避免这种情况?
最佳答案
我终于解决了一个问题,实际上是两个问题:
- HTML 模板已缓存。通过在模板 URL 中添加额外参数(例如“template.html?v=201612041641”)已修复此问题
- JS 文件保留在 Chrome 内存缓存中。尽管事实上它应该是有点快的缓存,但 JS 却被缓存了好几个小时。并且 Ctrl/Shift + F5 不会影响内存缓存。另外,我尝试在根 html 页面中将缓存控制设置为“无存储,无缓存”。最后,我将额外的 header 设置到 IIS 响应 header 选项“Control-Cache:no-cache”中,现在它可以工作了。 JS 文件存储在硬盘 Chtome 存储上,收到 304 状态并正确更新更改的文件
关于javascript - 在 Angular2 中强制重新加载 HTML 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908912/