javascript - 在 Angular2 中强制重新加载 HTML 模板

标签 javascript google-chrome angular

我正在开发 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 分钟了,但它仍然加载内存中的缓存文件。这是有意的行为吗?如何避免这种情况?

最佳答案

我终于解决了一个问题,实际上是两个问题:

  1. HTML 模板已缓存。通过在模板 URL 中添加额外参数(例如“template.html?v=201612041641”)已修复此问题
  2. 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/

相关文章:

Angular6 - FormControlName - TypeError : Cannot read property 'get' of undefined

angular - 如何创建在验证后返回 Observable 的函数?

javascript - 错误 : incompatible types: MainActivity cannot be converted to FragmentActivity . 添加包(新 ReactDatePackage(本))

css - <strong> 标记未显示在 Chrome 中,但显示在所有其他浏览器中

javascript - Angular2 - 更改路线时我收到加载子路线的systemJs错误

html - 容器流体无法在 Chrome 上正确填充屏幕宽度

javascript - 如何使用 javascript 获取浏览器当前的语言环境首选项?

javascript - EventEmitter 事件处理程序的延迟附加模式?

javascript - 重构两个作用于不同 HTML 标签的相同函数

javascript - 将 gridstack.js 包装到 Angular 2 组件中