Какие методы можно использовать, чтобы избежать кэширования страницы браузером? - PullRequest
0 голосов
/ 03 марта 2009

У меня есть пользователь, который пытается просмотреть вопросы онлайн-экзамена. Во время экзамена они выбирают 1 из 4 ответов и нажимают «Ответить». Для этого пользователя кажется, что он загружает одну и ту же страницу / вопрос снова и снова, где он должен переходить к новому вопросу после того, как на каждый вопрос ответили. Я предполагаю, что это кэширование, но, похоже, это не кэширование в браузере, поскольку они пробовали и Internet Explorer, и Firefox. Они используют спутниковый интернет, поэтому я предполагаю, что в их сети / маршрутизаторе есть еще какое-то кеширование.

Вот заголовки, которые отправляются с сервера.

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

Пользователь полностью сбросил настройки браузера, но это ничего не изменило. Я добавил метку времени в запрос / строку GET страницы, например:

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

Какие еще методы можно использовать, чтобы заставить компьютер пользователя обновлять страницу при каждой загрузке страницы?

Сервер работает под управлением Apache, PHP, MySQL.

Ответы [ 3 ]

2 голосов
/ 03 марта 2009

См. спецификацию w3.org для Cache-Control , вы можете иметь только одно значение для Cache-Control. Вы хотите без кеша, я полагаю.

РЕДАКТИРОВАТЬ: Либо это старая спецификация, либо де-факто это отличается. Попробуйте

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

(из здесь )

1 голос
/ 03 марта 2009

Set-Cookie: PHPSESSID = [...]; путь = /

Возможно ли, что у них запущен какой-то элемент управления cookie?

Если это так, PHP можно настроить для передачи идентификатора сеанса через URL.

0 голосов
/ 03 марта 2009

Я использую:

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

Edit: ... и никогда не было проблем. Кажется, что между пользователем и вашим приложением существует какой-то очень сильный уровень кэширования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...