【问题标题】:Remove Template cache on logout Angular.js在注销 Angular.js 时删除模板缓存
【发布时间】:2014-10-05 17:43:34
【问题描述】:

一旦用户单击注销,如何删除 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 模板,我们如何确保模板也未缓存?

【问题讨论】:

  • 只是一个建议:管理后退按钮以将用户重定向到登录,而不是删除模板缓存
  • 嗨@HarishR 我们该怎么做?任何链接都会很有帮助..
  • 你必须在你的应用程序中使用一些路由机制,要么是 ui-router 要么是 ng-route,使用它你可以在 $routeChangeStart 或 $stateChangeStart 上更改路由
  • 问题是我们的登录页面不是使用 angularJS 制作的。我们有多个应用程序的 1 个通用登录页面。
  • @entre 我们通过按照您的建议将用户重定向到登录页面解决了这个问题。谢谢。

标签: angularjs caching browser-cache back


【解决方案1】:

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

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

$cacheFactory 有一个removeAll() 方法。试试这个,如果你想自己连接它(例如,在你注入 $cacheFactory 的服务中):

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

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

【讨论】:

  • IMO $templateCache.removeAll() 看起来更好
  • 谨慎使用$templateCache.removeAll()。这实际上删除了所有内容,包括第三方库(如 bootstrap-ui)使用的模板。相反,我建议您使用 $templateCache.remove('template.html') 单独删除模板
  • $templateCache.removeAll() 会破坏 angularjs-toaster
【解决方案2】:

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

我认为您可以使用以下标头设置对文件 php 的 http 请求: header("Cache-Control: no-cache, must-revalidate"); header("过期时间:星期一,1997 年 7 月 26 日 05:00:00 GMT");

在我的例子中,我所有的应用程序都在 Angularjs 上,但我使用 php 连接到一个 api,所以我在那个 php 中放置了标题并且它工作了!

希望你能帮忙!

编辑: 我的问题是在移动浏览器上(WindowsPhone10 的 IE 边缘),这个解决方案没有更多问题。

【讨论】:

  • 答案应始终使用问题中使用的相同语言。
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多