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

时间:2016-10-07 03:30:36

标签: javascript google-chrome angular

我正在开发Angular2项目并遇到Chrome缓存HTML模板的问题。这对开发来说不是问题,因为我可以在Chrome开发模式下忽略缓存。

但这对客户及其用户来说真的很痛苦...... 我尝试将以下内容添加到templateURL:

std::istream_iterator<char> it(std::cin);
std::istream_iterator<char> end;
std::string data(it,end);
std::string delimiter = "#";
StringTokenizer strtok(data,delimiter);
std::string t1      = strtok.nextToken();
std::string t2      = strtok.nextToken();

更新的URL已添加到自动生成的JS中,但即使我单击Shift + F5,Chrome仍然使用缓存的JS。结帐屏幕截图:http://screencast.com/t/bc2nf4zVcm

有没有可靠的方法让它发挥作用?

由于

编辑:Decmber 2nd

我终于弄清楚那里发生了什么。尽管我已经在TS中添加了更改(并且自动生成的JS也已更新),但Chrome仍在从内存缓存中加载文件 - screencast.com/t/FGuaMXaKL。我一直在等待30分钟,但它仍然加载内存缓存文件。这是打算行为吗?怎么避免这个?

1 个答案:

答案 0 :(得分:1)

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

  1. 缓存了HTML模板。通过在模板URL中添加额外参数来修复此问题,例如“template.html?v = 201612041641”
  2. JS文件停留在Chrome内存缓存中。尽管它应该有点快速缓存JS被缓存了几个小时。并且 Ctrl / Shift + F5 不会影响内存缓存。此外,我尝试在根html页面中将缓存控制设置为“no-store,no-cache”。最后,我将额外的标头设置到IIS响应标头选项“Control-Cache:no-cache”中,现在它可以工作了。 JS文件存储在硬盘Chtome商店,304状态已收到,更改的文件已正确更新