2008-10-02 8 views
4

Je crois comprendre qu'il ya une directive d'en-tête de réponse HTTP pour désactiver la mise en cache de la page:Howto Désactiver la mise en cache dans une page jsp

Cache-Control:no-cache 

je peux modifier l'en-tête par "main":

<%response.addHeader("Cache-Control","no-cache");%> 

Mais est il y a une "belle" façon de rendre l'interpréteur JSP retourne cette ligne d'en-tête dans la réponse du serveur?

(j'ai vérifié la <% page @ ...%> directive. Il semble qu'il n'y a rien comme ça.)

Répondre

3

ajouter également

 
response.addHeader("Expires","-1"); 
response.addHeader("Pragma","no-cache"); 

à vos en-têtes et lui donne un coup de feu.

+0

J'ai essayé avec le code suivant, ce n'est pas la mise en cache de la page, mais quand j'appuie sur le bouton de retour du navigateur, le navigateur dit que ce document n'existe plus, recharger la page. Pourquoi ne recharge-t-il pas la page automatiquement? '<% response.setHeader (" Cache-Control "," no-cache "); response.setHeader ("Cache-Control", "no-store"); response.setHeader ("Pragma", "no-cache"); response.setDateHeader ("Expire", 0); %> ' – Sadanand

0

Si vous utilisez un servlet, alors je crois que ce que vous avez publié dans la question serait la bonne approche. Je ne suis au courant d'aucun moyen de le faire dans la JSP.

0
<?xml version="1.0"?> 
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> 
<jsp:scriptlet><![CDATA[ 
    response.setHeader("Cache-Control", "no-cache"); 
]]></jsp:scriptlet> 
</jsp:root> 

Vous devez placer l'en-tête de réponse à l'intérieur de <jsp:root />. Aussi, je recommanderais à la place de l'envoyer à partir de votre servlet au lieu de la page JSP.

0

IlRC certains navigateurs peuvent ignorer les paramètres de contrôle de cache dans certains contextes. La solution « sûre » pour cela était d'obtenir toujours une page (même un chunk AJAX) avec une nouvelle variable de chaîne de requête (comme le temps.)

Questions connexes