注销Angular.js时删除模板缓存

时间:2014-08-12 15:12:44

标签: angularjs caching browser-cache back

一旦用户点击退出,如何删除Angular模板缓存?我们进行了彻底的研究,并尝试实施大部分可用的解决方案。我们试过了

HTML元标记

<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

服务器端

res.setHeader('cache-control', 'no-cache', 'no-store', 'must-revalidate');

的Javascript

我们尝试删除此blog

中指定的浏览器历史记录

我们现在面临的问题是当用户从我们的应用程序退出并按回按钮时,他显示空的html模板,因为服务没有缓存,我们如何确保模板不缓存?

2 个答案:

答案 0 :(得分:14)

$templateCache只是具有特定名称的$cacheFactory的包装。这实际上就是它的所有代码:

function $TemplateCacheProvider() {
  this.$get = ['$cacheFactory', function($cacheFactory) {
    return $cacheFactory('templates');
  }];
}

$cacheFactoryremoveAll()方法。试试这个,如果您想自己连线(例如,在您注入$cacheFactory的服务中):

$cacheFactory('templates').removeAll();

但另外,如果您的应用程序对安全性敏感,可能要完全禁用缓存。您可以在整个浏览器上执行reload()调用以转储所有本地JS变量,然后在实际的HTTP驱动资产上面的no-cache pragma将执行您想要的操作。

答案 1 :(得分:0)

我找到了一个解决我的问题的解决方案,使用php,这里How to clear browser cache with php?

我认为您可以使用此标头为文件php设置http请求: header(“Cache-Control:no-cache,must-revalidate”); header(“Expires:Mon,26 Jul 1997 05:00:00 GMT”);

在我的情况下,我的所有应用程序都在Angularjs上,但是我用php连接到api,所以在那个php中我放了标题并且它有用了!

希望你能帮忙!

编辑: 我的问题出在移动浏览器(WindowsPhone10的IE边缘)上,并没有更多问题。