【问题标题】:How to bypass template cache in angularjs?如何绕过angularjs中的模板缓存?
【发布时间】:2015-09-09 15:00:09
【问题描述】:

当我在代码中的任何模板 (html) 中进行更改并从浏览器刷新时,应用程序中不会发生更改。

当我对任何模板进行更改时,我想绕过模板缓存,即当我对模板进行任何更改并从浏览器刷新时,我想更新代码而不是来自$templateCache

我怎么知道模板有什么变化?

我也从 Stackoverflow 参考中尝试过这段代码。

app.run(function($rootScope, $templateCache) {
   $rootScope.$on('$viewContentLoaded', function($event) {
       console.log($event);
       alert("abc");
      //$templateCache.removeAll();
        $templateCache("templates").removeAll();
   });
});

【问题讨论】:

  • 浏览器会不会做缓存?
  • 是的,大多数时候浏览器都会这样做。尤其是 IE。

标签: javascript angularjs templates angular-templatecache


【解决方案1】:

我认为这是由于您积极地在网页上工作并希望立即看到您的更改,而不是您实际需要的生产? 如果是这样,那么您可以关闭浏览器中的缓存。在 Chrome 中,您可以通过转到开发人员工具 -> 设置 -> 常规并勾选“禁用缓存(在 DevTools 打开时)”

【讨论】:

  • 我不想禁用缓存,因为很多事情也取决于缓存和性能问题。而且我们不能告诉客户端使用 ctrl+f5 / ctrl+shift+R 来刷新应用程序。
【解决方案2】:

浏览器可能会不顾您的逻辑进行一些缓存。

如果您不想缓存请求,请尝试发送标头:Cache-Control: no-cache(第 14.9 节)。

无缓存:

如果 no-cache 指令未指定字段名,则缓存不得使用响应来满足后续请求 没有与原始服务器成功重新验证。这允许一个 源服务器以防止缓存,即使是已被缓存的缓存 配置为向客户端请求返回陈旧的响应。

对于开发,您还可以禁用浏览器中的缓存,或使用ctrl+f5/ctrl+shift+R 或您的浏览器/操作系统的组合键,这将绕过缓存强制重新加载页面。

【讨论】:

  • 我不想禁用缓存,因为很多事情也取决于缓存和性能问题。而且我们不能告诉客户端使用 ctrl+f5 / ctrl+shift+R 来刷新应用程序。
  • 如果您只想刷新浏览器的缓存条目,它应该是一个简单的组合键。
  • 我可以删除所有模板的缓存或我进行更改的模板吗...?
  • 如果您在特定页面上,您可以刷新来自该页面的请求,这应该只刷新该页面中的相关内容(包括生成内容的特定请求)。
  • 我认为你可以使用请求拦截器并添加参数来结束浏览器缓存,结帐this question
猜你喜欢
  • 2015-04-23
  • 1970-01-01
  • 2015-08-29
  • 2021-10-23
  • 2010-09-26
  • 2015-02-15
  • 1970-01-01
  • 2021-01-29
  • 1970-01-01
相关资源
最近更新 更多