Перейти к содержимому

Как запретить браузеру отдавать кэш на http запрос

  • автор:

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

Заказчик специфический, каждый раз забывает обновлять кэш и каждый раз ругается. Ликбез на тему кэширования не работает, хочется на время презентаций запретить браузеру клиента кешировать контент и каждый раз подгружать его с чистого листа. Как такое реализовать лучше всего?

  • Вопрос задан более трёх лет назад
  • 5891 просмотр

Комментировать
Решения вопроса 1
Веб-разработчик

upd: по теме кеширования sitear.ru/material/zapret-keshirovaniya-stranicy-h.
Ответ написан более трёх лет назад
Нравится 2 2 комментария

CrewCut

CrewCut @CrewCut Автор вопроса

Данный мета-тег актуален, работает на мобильных устройствах? Где-то читал про него, что он уже вышел из использования, но не могу точно сказать

CrewCut: маловероятно, тег то для браузеров, соответственно и поддержку тега должен браузер осуществлять. + еще раз перечитал вопрос, а действительно оно вам надо, чую я вам не это изначально нужно, т.к. зачем клиенту запрещать кешировать страницы, что с этого заказчику. другое дело если бы заказчик хотел на своей стороне (сервера) запретить кеширование.

Предотвращение кэширования в Internet Explorer

Устаревшее и не поддерживаемое классическое приложение Internet Explorer 11 было окончательно отключено с помощью обновления Microsoft Edge в некоторых версиях Windows 10. Дополнительные сведения см. в статье Часто задаваемые вопросы о прекращении использования классических приложений Internet Explorer 11.

В этой статье описывается использование заголовков HTTP для управления кэшированием веб-страниц в Internet Explorer.

Исходная версия продукта: Internet Explorer
Исходный номер базы знаний: 234067

Аннотация

Вы можете использовать Microsoft Internet Information Server (IIS), чтобы легко помечать страницы с высокой степенью активности или конфиденциальности с помощью следующего скрипта в крайнем начале определенных страниц Active Server (ASP):

Срок действия и заголовок Expires

Настоятельно рекомендуется, чтобы все веб-серверы использовали схему для истечения срока действия всех веб-страниц. Для веб-сервера не рекомендуется предоставлять сведения об истечении срока действия через заголовок ответа HTTP Expires для каждого ресурса, возвращаемого запрашивающим клиентам. Большинство браузеров и промежуточных прокси-серверов сегодня уважают эту информацию об истечении срока действия и используют ее для повышения эффективности связи по сети.

Всегда используйте заголовок Expires, чтобы указать наиболее разумное время, когда конкретный файл на сервере должен быть обновлен клиентом. При регулярном обновлении страниц наиболее эффективным ответом будет следующий период обновления. Возьмем, например, ежедневную новостную страницу в Интернете, которая обновляется каждый день в 5 утра. Веб-сервер для этой страницы новостей должен вернуть заголовок Expires со значением 5 утра на следующий день. После этого браузеру не нужно снова обращаться к веб-серверу, пока страница не изменится.

Страницы, которые не должны изменяться, должны быть помечены датой окончания срока действия примерно один год.

Во многих случаях веб-серверы имеют одну или несколько изменяющихся страниц на сервере, которые содержат сведения, которые могут быть немедленно изменены. Эти страницы должны быть помечены сервером значением «-1» для заголовка Expires. При последующих запросах пользователя Internet Explorer обычно связывается с веб-сервером для обновления этой страницы с помощью условного запроса If-Modified-Since. Однако страница остается в кэше диска (временные файлы Интернета). Страница используется в соответствующих ситуациях без обращения к удаленному веб-серверу, например:

  • когда для доступа к журналу навигации используются кнопки НАЗАД и ВПЕРЕД.
  • если браузер находится в автономном режиме.

Заголовок Cache-Control

Однако некоторые страницы настолько изменчивы или конфиденциальны, что кэширование диска не требуется. Для этого Internet Explorer поддерживает заголовок HTTP 1.1 Cache-Control. Этот заголовок предотвращает кэширование определенного веб-ресурса, если значение без кэша указано сервером HTTP 1.1.

Страницы, которые хранятся вне кэша, недоступны до тех пор, пока браузер не сможет повторно использовать веб-сервер. Таким образом, серверы должны использовать заголовок Cache-Control экономно. В большинстве случаев рекомендуется использовать значение Expires: -1.

Заголовок Pragma: No-Cache

К сожалению, устаревшие серверы HTTP 1.0 не могут использовать заголовок Cache-Control. Для обеспечения обратной совместимости с серверами HTTP 1.0 Internet Explorer поддерживает специальное использование заголовка HTTP Pragma: no-cache. Если клиент взаимодействует с сервером по безопасному соединению ( https:// ), а сервер возвращает заголовок Pragma: no-cache с ответом, Internet Explorer не кэширует ответ.

Однако заголовок Pragma: no-cache не предназначен для этой цели. В соответствии со спецификациями HTTP 1.0 и 1.1 этот заголовок определяется только в контексте запроса, а не ответа. Он предназначен для прокси-серверов, которые могут препятствовать получению определенных важных запросов к целевому веб-серверу. Для будущих приложений заголовок Cache-Control является правильным средством управления кэшированием.

Метатеги HTTP-EQUIV

HTML-страницы позволяют использовать специальную форму HTTP-EQUIV тега META, которая указывает определенные заголовки HTTP из HTML-документа. Ниже приведен краткий пример HTML-страницы, в котором используются как Pragma: no-cache, так и Expires: -1:

Pragma: без кэша запрещает кэширование только при использовании через безопасное подключение. Тег META Pragma: no-cache обрабатывается так же, как и Expires: -1, если используется на небезопасной странице. Страница будет кэширована, но помечена как немедленно истекла.

Cache-Control метатеги HTTP-EQUIV игнорируются и не действуют в Internet Explorer версии 4 или 5. Чтобы использовать Cache-Control, этот заголовок должен быть указан с помощью заголовков HTTP, как описано в разделе Cache-Control выше.

Использование стандартных заголовков HTTP гораздо предпочтительнее, чем теги META. Теги META обычно должны отображаться в верхней части раздела HTML HEAD. Кроме того, существует по крайней мере одна известная проблема с тегом PRAgma HTTP-EQUIV META.

Параметры сервера для кэширования

Если заголовок Cache-Control необходимо использовать на страницах, отличных от ASP, для автоматического добавления этого заголовка может потребоваться использовать параметры в конфигурации сервера. Процесс добавления заголовков HTTP в ответы сервера для определенного каталога см. в документе сервера. Например, в IIS 4 выполните следующие действия.

  1. Запустите диспетчер IIS.
  2. В дереве компьютеров и служб откройте веб-сервер по умолчанию или соответствующий веб-сервер. Найдите каталог, содержащий содержимое, которому требуется заголовок Cache-Control.
  3. Откройте диалоговое окно Свойства для этого каталога.
  4. Перейдите на вкладку Заголовки HTTP .
  5. Нажмите кнопку Добавить в группе Настраиваемые заголовки HTTP и добавьте Cache-Control для имени заголовка и no-cache для значения заголовка.

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

Контрольный список проблем

Если вы применили методы, описанные в этой статье, и у вас по-прежнему возникают проблемы с кэшированием и Internet Explorer, просмотрите этот удобный контрольный список шаг за шагом, прежде чем обращаться в Корпорацию Майкрософт за технической поддержкой:

  • Используется ли заголовок Cache-Control со свойством ASP Response.CacheControl или через возвращенный заголовок HTTP? Это единственный способ предотвратить кэширование в Internet Explorer.
  • Вы используете Internet Explorer 4.01 с пакетом обновления 2 (SP2) или более поздней версии? Полностью предотвратить кэширование в более ранних версиях браузера невозможно.
  • Вы перепроверили, что на веб-сервере включен протокол HTTP 1.1 и что он возвращает ответы HTTP 1.1 в Internet Explorer? Cache-Control заголовки недопустимы в ответах HTTP 1.0.
  • Если вы используете CGI/ISAPI/Servlets на стороне сервера, точно ли вы следуете спецификации HTTP 1.1, особенно о завершении CRLF заголовков HTTP? В интересах производительности Internet Explorer обычно не умоляет ответов, которые нарушают спецификацию HTTP 1.1. Обычно это приводит к игнорированию заголовков или отчетов о непредвиденных ошибках сервера.
  • Правильно ли написаны заголовки HTTP?

См. также

  • Дополнительные сведения о протоколе HTTP 1.1 см. по этой внешней ссылке: RFC 2616.
  • Кэш клиента в IIS

Обратная связь

Были ли сведения на этой странице полезными?

Как отключить кэш раз и навсегда на странице

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

Также безрезультатны аналогичные комманды на PHP:
Как отключить кэш для всего (css и js), навсегда и для всех браузеров?
Отслеживать
Pavel Sumarokov
задан 24 июн 2019 в 17:12
Pavel Sumarokov Pavel Sumarokov
555 1 1 золотой знак 5 5 серебряных знаков 22 22 бронзовых знака

И не дадут. Это указания кеширования самой страницы, а не включаемых файлов. Для включаемых файлов надо отдельно отдавать заголовок Cache-control, например средствами web сервера. Или делать динамические url для самих включаемых файлов, вроде