Prévenir le cache d'IE
Je développe une application web Java EE en utilisant Struts. Le problème, c'est avec Internet Explorer la mise en cache. Si un utilisateur se déconnecte, il peut accéder à certaines pages parce qu'elles sont mises en cache et aucune demande n'est faite. Si j'ai cliquer sur "actualiser", il fonctionne très bien. Aussi, si un utilisateur accède à la page de connexion de nouveau de ne pas rediriger lui parce que cette page est également mis en cache.
Deux solutions me viennent à l'esprit:
- Écrit un Intercepteur (filtre de servlet comme) à ajouter à en-tête de réponse no-cache etc.
- Ou ou mettre
<meta>
balises à chaque page.
Lequel dois-je faire?
- La version de Struts utilisez-vous?
- J'ai trouvé que l'ajout de la non-têtes de cache ne fonctionne pas toujours sur IE.
- Apparemment, vous avez oublié le
Expires
en-tête. Voir aussi les réponses à cette question. - quelle est donc la solution pour cela?
Vous devez vous connecter pour publier un commentaire.
Plutôt de définir les en-têtes suivants sur la
HttpServletResponse
de la page(s) en question, de sorte que vous n'avez pas besoin de copypaste sur toutes les pages manuellement:C'est l'équivalent de réglage de la meta-têtes dans la page(s) manuellement:
Voir aussi cette réponse. N'oubliez pas de vider le cache du navigateur avant de tester 😉
J'ai trouvé ce qui suit pour bien travailler:
De balises sur cette question, il semble que vous êtes en utilisant Struts. Struts 1.x vous permet de le faire grâce à la configuration en struts-config.xml par la mise en
nocache="true"
sur lecontroller
élément:Mark Nottingham tutoriel de mise en cache est la meilleure ressource que je l'ai vu sur le web au sujet de HTTP et de la mise en cache si vous cherchez à comprendre plus.
Cela étant dit, selon le problème que vous rencontrez, il pourrait être un historique du navigateur de problème. Voir ici pour plus d'informations à ce sujet.
Cache-Control
propriétés comme indiqué dans votre exemple est suffisant, ils (et lesExpires
en-tête) déjà "implicitement" définit les propriétés suivantes pour les valeurs souhaitées.Ressemble IE < 9 sera toujours en cache, même si vous avez pragma: no-cache dans la tête et jeu de navigateur de l'actualisation à chaque chargement de la page. Vous devez ajouter les balises meta de nouveau dans une deuxième section de la tête avant la clôture de l'html. Ce droit est à partir de MS lui-même.
http://support.microsoft.com/kb/222064/
peu mieux explication ici
http://www.htmlgoodies.com/beyond/reference/article.php/3472881/So-You-Dont-Want-To-Cache-Huh.htm
De test, vous devez également l'Expiration de: -1 balise meta pour le faire fonctionner. Il est recommandé d'utiliser Expire: 1 et non de 0.
Ajouter une balise type="button" dans le bouton d'action.
La valeur par défaut de l'attribut type repose sur le document actuel en mode de compatibilité. La valeur par défaut est de se soumettre. Dans d'autres modes de compatibilité de la valeur par défaut est le bouton.
Lorsque le BOUTON de l'élément est soumis à un formulaire, la valeur repose sur le document actuel en mode de compatibilité.
Windows Internet Explorer 8 et versions ultérieures. La valeur par défaut de l'attribut type repose sur le document actuel en mode de compatibilité. Dans IE8 mode standard, la valeur par défaut est de se soumettre. Dans d'autres modes de compatibilité et les versions antérieures de Windows Internet Explorer, la valeur par défaut est le bouton.
Internet Explorer 8 et versions ultérieures. Lorsque le BOUTON de l'élément est soumis à un formulaire, la valeur repose sur le document actuel en mode de compatibilité. Dans IE8 mode, la valeur de l'attribut est soumis. Dans d'autres modes de document et les versions antérieures d'Internet Explorer, le innerText valeur est présentée.
http://msdn.microsoft.com/en-us/library/ie/ms535211(v=vs. 85).aspx
Modifier les en-têtes avec no-cache etc. C'est la manière habituelle.