Как я могу запретить браузерам кэшировать мою веб-страницу, используя заголовки HTTP 1.1? - PullRequest
1 голос
/ 02 ноября 2010

Хотя я установил Expires в качестве даты в прошлом и Cache-Control в no-store, no-cache, я все еще кэширую одну из своих веб-страниц.

Вот заголовки HTTP, отправленные в браузер:

Date: Tue, 02 Nov 2010 09:13:23 GMT
Server: Apache/2.2.15 (el)
X-Powered-By: PHP/5.2.13
Set-Cookie: PHPSESSID=2luvb7b316lfc8ht570s1l1v84; path=/
Set-Cookie: Newsletter_Counter=17; expires=Wed, 02-Nov-2011 09:13:23 GMT; 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
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Connection: close
Content-Type: text/html; charset=UTF-8

То же поведение для FF 3.6, Safari и IE 8.

Как заставить браузеры перестать кэшировать страницу?

Ответы [ 4 ]

1 голос
/ 03 ноября 2010

Следующие заголовки всегда хорошо работали для меня (для HTTP / 1.1).Вам не нужна Pragma: no-cache.

Cache-Control: no-cache
Expires: <some date in the past>
Vary: *

Попробуйте изменить значение Vary на звездочку из моего примера.

Per http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44:«Значение поля Vary, равное« * », означает, что кеш не может определить из заголовков запроса последующего запроса, является ли этот ответ подходящим представлением."

1 голос
/ 02 ноября 2010

Браузеры сами решают кешировать. Вы можете использовать случайный параметр GET, чтобы браузеры не кэшировали, например,

http://www.foo.com/yourfile.zip?id=1234
0 голосов
/ 24 ноября 2010

Использование Cache-Control: no-store должно запрещать любое хранение:

нет-магазин
[…] При отправке в ответе кэш НЕ ДОЛЖЕН хранить какую-либо часть этого ответа или запроса, который его вызвал. Эта директива применяется как к не совместно используемым, так и совместно используемым кэшам. [...]

0 голосов
/ 02 ноября 2010

Вы, похоже, делаете правильные вещи (но, как многие полагают, отправка заголовка ответа «Pragma: no-cache» оказывает некоторое влияние на кэширование на стороне браузера - не должно)

Что вы имеете в виду, что он кэшируется? Он не будет (обычно) извлекаться снова с сервера, если пользователь нажимает кнопку «Назад» и был получен с помощью операции GET.

...