2010-11-12 5 views
2

J'ai terminé un script de connexion et j'ai remarqué que même après que je me suis déconnecté, je peux retourner voir la page protégée. Ce n'est vraiment pas un problème parce que l'utilisateur ne peut pas faire de dégâts mais je reçois beaucoup d'erreurs javascript que je n'aime pas. J'aimerais pouvoir empêcher totalement la mise en cache côté client si cela est possible.Le contrôle du cache ne fonctionne pas

J'ai essayé ce qui suit, mais cela ne fonctionne pas car je peux encore revenir en arrière et voir une copie en cache. Voici ce que j'utilise jusqu'à présent.

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 

Répondre

5

Avez-vous essayé quelque chose de plus complet?

Expires: Sat, 26 Jul 1997 05:00:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 

Source: http://www.php.net/manual/en/function.session-cache-limiter.php

+0

@kijin, j'ai essayé mais à moins que je ne comprenne pas quelque chose, je peux encore revenir en arrière et voir la page protégée. Même avec votre exemple "complet", il semble toujours mettre en cache les résultats. – jim

+0

Je devrais également mentionner que si j'essaie de revenir en arrière en utilisant Chrome, je ne suis pas capable de le faire. Il semble que je n'ai besoin d'aucune des fonctions d'en-tête avec Chrome. – jim

+0

@jim Sur quels autres navigateurs testez-vous, en plus de Chrome? Avez-vous essayé d'effacer le cache du navigateur? – kijin

0

Je ne sais pas si cela fonctionnera pour une page entière, mais il vaut le coup.

Nous diffusons des images dynamiques qui ont exactement le même nom de fichier, encore et encore. Évidemment, la mise en cache de ces images serait mauvaise, mauvaise, mauvaise (et complètement casser notre application, vraiment).

Donc, nous envoyons ces trois têtes au navigateur, et il a travaillé beaucoup pour éliminer complètement la mise en cache des images sur tous les navigateurs:

//Prevent the image from caching, so it is created fresh each time. 
app.Response.AddHeader("pragma", "no-store,no-cache"); // //HTTP 1.0 
app.Response.AddHeader("cache-control", "no-cache, no-store, must-revalidate, max-age=-1"); // HTTP 1.1 
app.Response.AddHeader("expires", "Mon, 14 Jul 1789 12:30:00 GMT"); // Date in the past 

Note: Nous avons testé beaucoup de variations, mais ceux-ci étaient les trois ingrédients essentiels dans la recette magique pour empêcher la mise en cache de l'image côté client. Vous pouvez avoir du succès en utilisant ceux-ci pour une page entière, mais je n'ai pas testé ce scénario spécifique.

Questions connexes