一旦用户点击退出,如何删除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模板,因为服务没有缓存,我们如何确保模板不缓存?
答案 0 :(得分:14)
$templateCache
只是具有特定名称的$cacheFactory
的包装。这实际上就是它的所有代码:
function $TemplateCacheProvider() {
this.$get = ['$cacheFactory', function($cacheFactory) {
return $cacheFactory('templates');
}];
}
$cacheFactory
有removeAll()
方法。试试这个,如果您想自己连线(例如,在您注入$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边缘)上,并没有更多问题。