2009-03-03 6 views
0

J'ai un utilisateur qui essaie d'afficher les questions d'un examen en ligne. Pendant l'examen, ils sélectionnent 1 des 4 réponses et cliquent sur "Répondre". Pour cet utilisateur, il semble charger la même page/question encore et encore, où il devrait passer à une nouvelle question après chaque réponse à une question. Je suppose que c'est la mise en cache, mais cela ne semble pas être la mise en cache du navigateur car ils ont essayé Internet Explorer et Firefox. Ils utilisent Internet par satellite, donc je suppose qu'il y a une autre mise en cache sur leur réseau/routeur.Quelles sont les méthodes pouvant être utilisées pour éviter qu'une page ne soit mise en cache par le navigateur?

Voici les en-têtes envoyés à partir du 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 pas fait de différence. J'ai ajouté un horodatage à la requête GET/chaîne de la page, tels que:

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

Quelles sont les autres méthodes puis-je utiliser pour forcer l'ordinateur de l'utilisateur pour actualiser la page sur chaque chargement de page?

Le serveur exécute Apache, PHP, MySQL.

Répondre

0

-je utiliser:

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

Edit: ... et n'a jamais eu un problème. Il semble que la couche de mise en cache est très forte entre l'utilisateur et votre application.

2

Voir w3.org's spec on Cache-Control, vous ne pouvez avoir qu'une valeur pour Cache-Control. Vous voulez pas de 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 here)

1

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

Est-il possible qu'ils aient une sorte de contrôle de cookie en cours d'exécution?

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

+0

Comment cela affecterait-il la mise en cache? L'ID de session est le même pour chaque page de la session en cours. –

+0

Je ne pense pas que cela ait quelque chose à voir avec la mise en cache. Vous avez déjà tous les cachebuster connus de l'homme dans ces en-têtes; sent beaucoup plus comme votre application ne fonctionne pas sans cookies. – bobince

+0

Darryl, je pense que cela dépend de la façon dont vous gérez la session. Vous pouvez, facultativement, conserver cela dans la mémoire locale sur le serveur et ne pas utiliser un cookie. Se souvenir que le client est (par défaut) complètement apatride. –

Questions connexes