Как правильно указать браузеру не кэшировать?
Вопрос
У меня есть веб-страница, которая всегда должна оставаться актуальной.Я не хочу, чтобы браузер кэшировал его.С этой целью этот мета-тег встроен в страницу:
<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, посмотрите на это:
Другие советы
Это должно помочь вам:
<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.