【问题标题】:AngularJS Firefox HTML cacheAngularJS Firefox HTML 缓存
【发布时间】:2015-04-23 08:33:00
【问题描述】:

在 AngularJS 框架下在 Firefox 中进行开发真的很烦人。为什么?因为您只需刷新并重新加载 JavaScript,但 HTML 多次并非如此。因此,每次更改模板中的单个位时,都必须手动清除缓存以确保应用更改。

知道为什么 Firefox/Angular 会这样做,以及如何防止它吗?

我还尝试了“硬刷新”扩展 (https://addons.mozilla.org/en-US/firefox/addon/hard-refresh/?src=search) 以使事情变得更简单,还尝试了 Ctrl + F5 组合,但即使这样也不足以真正刷新页面。到目前为止,我发现的唯一方法是通过首选项菜单,在隐私选项卡中,选择(仅)要清除的缓存。

【问题讨论】:

  • 我个人从来没有遇到过 Ctrl+F5 的问题,但它可能与版本有关。
  • 也许也依赖于 SO?因为我有最后一个版本,但是我在GNU/Linux下。

标签: angularjs firefox caching


【解决方案1】:

Firefox devtoolsFirebug 都可以暂时禁用缓存。

如果您使用全功能 Web 服务器进行开发,您可以从服务器端禁用缓存,这样您就不会局限于调试器面板。

【讨论】:

  • 不确定如何从服务器端执行此操作。使用 Angular,您无法真正控制模板的加载,是吗?无论如何,我几乎一直都在使用开发工具,你知道吗?所以我认为这已经足够好了。谢谢!
  • 您使用的是哪台服务器?不,Angular 只控制模板缓存,直到页面重新加载(不是你的情况)
  • IIS。 (而且我需要更多角色来发布它......)
  • 是的,他们不会无缘无故地称它为“开发工具”...我没有用 IIS 尝试过,但它应该很容易,就像其他网络服务器一样。我想这可以通过 IIS 上的 GUI 或 web.config 来完成:iis.net/configreference/system.webserver/staticcontent/…
  • 嗯,这是一个很好的尝试,但经过一些尝试后,我又遇到了同样的问题,并且只能在手动清除缓存后看到良好的更新模板,如我所述。我会尽快从服务器上尝试(但这并不意味着很快)。
【解决方案2】:

您是否尝试使用 $templateCache 清除它,在您的 app.run 函数中添加以下代码:

$rootScope.$on('$viewContentLoaded', function() {
      $templateCache.removeAll();
});

【讨论】:

  • $templateCache 不是持久的,它不会在页面重新加载之间产生任何影响(尽管它可能对 F5-less 模板开发有用,与其他缓存禁用技术结合使用)。
猜你喜欢
  • 1970-01-01
  • 2014-11-06
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 2017-08-07
  • 2012-10-07
相关资源
最近更新 更多