Suppression de cache de Template sur déconnexion Angular.js
Comment faire pour supprimer Angulaire du cache de template une fois que l'utilisateur clique sur déconnexion? Nous avons fait des recherches approfondies et a essayé de mettre en œuvre la plupart des solutions disponibles. nous avons essayé de suivre
Balises HTML Meta
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
Côté serveur
res.setHeader('cache-control', 'no-cache', 'no-store', 'must-revalidate');
Javascript
Nous avons essayé de supprimer l'historique du navigateur, comme indiqué sur cette blog
Problème auquel nous faisons face en ce moment, c'est quand un utilisateur se connecte à partir de notre application et appuyez sur bouton de retour, il est montré vide html des modèles de services ne sont pas mis en cache, comment allons-nous assurez-vous que les modèles ne sont pas mis en cache?
Salut @HarishR Comment pouvons-nous faire? Un lien serait vraiment utile ..
vous devez être à l'aide de certains mécanisme de routage dans votre application soit de l'interface utilisateur du routeur ou ng-route, en utilisant que vous pouvez modifier l'itinéraire sur $routeChangeStart ou $stateChangeStart
Chose est notre page de connexion n'est pas faite en utilisant angularJS. Nous avons 1 commune de la page de connexion pour de multiples applications.
Nous avons résolu ce problème en redirigeant l'utilisateur vers la page de login comme vous l'avez suggéré. Merci.
OriginalL'auteur Kuldeep Daftary | 2014-08-12
Vous devez vous connecter pour publier un commentaire.
$templateCache
est juste un wrapper autour de$cacheFactory
avec un nom spécifique. C'est littéralement l'ensemble de son code:$cacheFactory
a unremoveAll()
méthode. Essayez, si vous voulez fil-le vous-même (par exemple, dans un service dans lequel vous avez injecté$cacheFactory
):Mais séparément, vous souhaitez peut-être désactiver la mise en cache si votre demande est sensibles à la sécurité. Vous pouvez faire un reload() appel sur l'ensemble du navigateur pour vider toutes les variables JS, et puis votre "no-cache" pragmas ci-dessus sur le réel HTTP piloté par les actifs à faire ce que vous voulez.
$templateCache.removeAll()
a l'air mieuxAttention lors de l'utilisation de
$templateCache.removeAll()
. Cela supprime tout, y compris les modèles utilisés par les bibliothèques tierces (comme bootstrap-iu). Au lieu de cela, je vous suggère de supprimer les modèles individuellement à l'aide de$templateCache.remove('template.html')
$templateCache.removeAll() rompre angularjs-grille-pain
OriginalL'auteur Chad Robinson
J'ai trouvé une solution pour résoudre mon problème, avec php, ici Comment faire pour effacer le cache du navigateur avec php?
Je pense que vous pouvez définir une requête http vers un fichier php à l'aide de cette en-têtes:
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
Dans mon cas, toutes mes app est sur Angularjs mais je me connecte à une api en php, donc en php que j'ai mis les en-têtes et cela a fonctionné!
Espère vous aider!
Edit:
Mon problème était sur téléchargement navigateur(IE bord de WindowsPhone10), et pas plus de problèmes avec cette solution.
OriginalL'auteur Israel Vázquez