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

StackOverflow https://stackoverflow.com/questions/1370896

  •  21-09-2019
  •  | 
  •  

Вопрос

У меня есть веб-страница, которая всегда должна оставаться актуальной.Я не хочу, чтобы браузер кэшировал его.С этой целью этот мета-тег встроен в страницу:

<meta name="Expires" content="Tue, 01 Jun 1999 19:58:02 GMT"> 

Однако некоторые браузеры, похоже, игнорируют это.Chrome особенно плох в этом, хотя другие браузеры, как правило, делают то же самое.

Когда я выбираю страницу из панели закладок, в большинстве случаев она даже не попадает на сервер, а просто загружается из кэша.Если я затем нажму F5, он отправится на сервер и получит новую копию.

Я упускаю что-то простое?Я думал, что мета-тег expires - это то, как это делается.

Это происходит в IIS 5.0 в Windows 2000.


Итог:похоже, что мета-теги внутри HTML-кода практически ничего не делают.Однако установка тегов expires в HTTP прекрасно справляется с этой задачей.

Это было полезно?

Решение

Отправляйте свои заголовки expires с помощью вашего сервера.В частности, если вы используете apache, посмотрите на это:

http://httpd.apache.org/docs/2.0/mod/mod_expires.html

Другие советы

Это должно помочь вам:

<meta http-equiv="cache-control" content="no-cache" />

Вы также можете настроить механизм статического кэша содержимого через IIS;вы можете узнать, как это сделать, здесь: http://support.microsoft.com/kb/247404.

Вы хотите отправить заголовок Expires, установленный на дату в прошлом (например, ваш мета-тег).

Expires - наиболее широко используемый заголовок кэша, но вы также можете использовать такие вещи, как Last-Modified или Etags, чтобы получить более конкретный контроль.

Мета-теги являются несколько устаревшим средством настройки протоколов кэширования, и большинство свойств управления мета-кэшем довольно устарели (напримерНЕТ КЭША).Многие пользовательские агенты игнорируют их.

Есть отличная статья, которую я когда-то читал о кэшировании браузера и кэшировании в целом :

http://www.mnot.net/cache_docs/

В нем очень подробно объясняется, что работает, а что нет, что лучше всего делать.

Таким образом, существует множество способов (html-теги, HTTP-заголовки) и типов кэша (прокси-сервер браузера, шлюзы).

Отправить Cache-Control: no-cache клиенту в заголовках ответа.
Пожалуйста, укажите, какую платформу вы используете, чтобы получить лучший ответ.

<meta http-equiv="Cache-Control" content="private, no-store" />

Это действительно ВСЕ, что вам нужно, как указано здесь https://youtu.be/TNlcoYLIGFk?t=654 автор: Эндрю Беттс, избранный участник W3C TAG.

Используя это, вам не понадобятся pragma или expires.Фактически, приведенное выше действие перезапишет команду Expires.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top