0 votes

Quelles sont les méthodes qui peuvent être utilisées pour éviter qu'une page soit mise en cache par le navigateur ?

J'ai un utilisateur qui essaie de visualiser les questions d'un examen en ligne. Pendant l'examen, il sélectionne 1 des 4 réponses et clique sur "Répondre". Pour cet utilisateur, il semble que la même page/question soit chargée encore et encore, alors qu'elle devrait passer à une nouvelle question après chaque réponse. Je pense qu'il s'agit d'une mise en cache, mais il ne semble pas s'agir d'une mise en cache du navigateur, car ils ont essayé Internet Explorer et Firefox. Ils utilisent l'Internet par satellite, donc je suppose qu'il y a une autre mise en cache sur leur réseau/routeur.

Voici les en-têtes qui sont envoyés par le serveur.

HTTP/1.1 200 OK 
Date: Tue, 03 Mar 2009 05:52:38 GMT 
Server: Apache/2.2.8 (Unix) 
X-Powered-By: PHP/5.2.6 
Set-Cookie: PHPSESSID=[...]; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Connection: close 
Content-Type: text/html; charset=UTF-8

J'ai demandé à l'utilisateur de réinitialiser complètement les paramètres de son navigateur, mais cela n'a rien changé. J'ai ajouté un horodatage à la requête/chaîne GET de la page, par exemple :

/path/question.php?exam_id=2323&user_exam_id=2334&timestamp=1236063834

Quelles autres méthodes puis-je utiliser pour obliger l'ordinateur de l'utilisateur à rafraîchir la page à chaque chargement ?

Le serveur utilise Apache, PHP, MySQL.

2voto

Simon Buchan Points 6245

Voir La spécification de w3.org sur le contrôle du cache vous ne pouvez avoir qu'une seule valeur pour Cache-Control. Vous voulez no-cache, je suppose.

EDIT : Soit c'est une ancienne spécification, soit c'est différent de facto. Essayez

Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: -1

(de ici )

1voto

David L Morris Points 917

Set-Cookie : PHPSESSID=[...] ; path=/

Est-il possible qu'ils aient une sorte de contrôle des cookies ?

Si c'est le cas, PHP peut être configuré pour propager un ID de session à travers l'URL.

0voto

cherouvim Points 18550

J'utilise :

Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT

Edit : ... et je n'ai jamais eu de problème. Il semble qu'une couche de cache très puissante se trouve entre l'utilisateur et votre application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X