Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
Устаревшее и не поддерживаемое классическое приложение Internet Explorer 11 было окончательно отключено путем обновления Microsoft Edge в некоторых версиях Windows 10. Дополнительные сведения см. в разделе "Часто задаваемые вопросы о выводе из эксплуатации классического приложения Internet Explorer 11 для рабочего стола".
В этой статье описывается использование заголовков HTTP для управления кэшированием веб-страниц в Internet Explorer.
Исходная версия продукта: Internet Explorer
Исходный номер базы знаний: 234067
Итоги
С помощью Microsoft Internet Information Server (IIS) можно легко пометить страницы с высокой степенью волатильности или конфиденциальности с помощью следующего сценария в начале определенных страниц Active Server Pages (ASP):
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
Срок действия и заголовок "Истекает срок действия"
Настоятельно рекомендуется, чтобы все веб-серверы использовали систему для установки срока действия всех веб-страниц. Это плохая практика для веб-сервера - не предоставлять информацию об истечении срока действия через заголовок ответа HTTP Expires для каждого возвращаемого ресурса запрашивающим клиентам. Большинство браузеров и промежуточных прокси-серверов сегодня уважают эту информацию об истечении срока действия и используют ее для повышения эффективности обмена данными по сети.
Всегда используйте заголовок "Срок действия", чтобы указать наиболее разумное время, когда определенный файл на сервере должен обновляться клиентом. Когда страницы регулярно обновляются, следующий период обновления является наиболее эффективным ответом. Например, ежедневная страница новостей в Интернете, которая обновляется каждый день в 5 утра. Веб-сервер для этой страницы новостей должен возвращать заголовок "Срок действия" со значением 5 утра на следующий день. По завершении браузер не должен снова связаться с веб-сервером, пока страница не изменится.
Страницы, которые не должны изменяться, должны быть указаны с датой окончания срока действия на срок примерно в один год.
Во многих случаях веб-серверы имеют одну или несколько изменяющихся страниц на сервере с информацией, которая подлежит немедленному изменению. Эти страницы должны быть помечены сервером со значением "-1" для заголовка "Срок действия". В будущих запросах пользователя Internet Explorer обычно обращается к веб-серверу для обновления этой страницы с помощью условного запроса If-Modified-Since. Однако страница остается в кэше дисков (временные файлы Интернета). Страница используется в соответствующих ситуациях, не связываясь с удаленным веб-сервером, например:
- Когда кнопки BACK и FORWARD используются для доступа к журналу навигации.
- если браузер находится в автономном режиме.
Заголовок 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 является правильным средством для управления кэшированием.
META-теги HTTP-EQUIV
HTML-страницы позволяют использовать специальную форму HTTP-EQUIV тега META, указывающего определенные заголовки HTTP из HTML-документа. Ниже приведён краткий пример HTML-страницы, использующей как Pragma: no-cache, так и Expires: -1.
<HTML>
<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD>
<BODY>
</BODY>
</HTML>
Pragma: no-cache предотвращает кэширование только при безопасном соединении. Pragma: мета-тег no-cache обрабатывается так же, как Expires: -1, если используется на небезопасной странице. Страница будет кэширована, но помечена как истекшей немедленно.
Теги META HTTP-EQUIV управления кэшем игнорируются и не влияют на Internet Explorer версий 4 или 5. Чтобы использовать элемент управления кэшем, этот заголовок необходимо указать с помощью заголовков HTTP, как описано в разделе "Управление кэшем" выше.
Примечание.
Использование стандартных заголовков HTTP гораздо предпочтительнее для тегов META. Теги META обычно должны отображаться в верхней части раздела HTML HEAD. И есть по крайней мере одна известная проблема с тегом PRAgma HTTP-EQUIV META.
Параметры сервера для кэширования
Если необходимо использовать заголовок cache-Control на страницах, отличных от ASP, может потребоваться использовать параметры в конфигурации сервера для автоматического добавления этого заголовка. Сведения о добавлении заголовков HTTP в ответы сервера для определенного каталога см. в документе сервера. Например, в IIS 4 выполните следующие действия.
- Запустите диспетчер IIS.
- В структуре компьютеров и служб откройте сервер веб-сайта по умолчанию или соответствующий веб-сервер. Найдите каталог, содержащий содержимое, которое требует заголовка Cache-Control.
- Откройте диалоговое окно "Свойства " для этого каталога.
- Выберите вкладку заголовки HTTP.
- Нажмите кнопку Добавить в группе настраиваемых заголовков HTTP и добавьте Cache-Control для имени заголовка и no-cache для значения заголовка.
Это не рекомендуется использовать этот заголовок глобально на всем веб-сервере. Ограничить его использование исключительно контентом, который абсолютно не должен кэшироваться на клиенте.
Контрольный список проблем
Если вы применили методы в этой статье, и у вас по-прежнему возникают проблемы с кэшированием и Internet Explorer, просмотрите этот удобный контрольный список пошаговые инструкции перед обращением в Корпорацию Майкрософт за технической поддержкой:
- Вы используете заголовок Cache-Control со свойством ASP
Response.CacheControl
или через возвращаемый заголовок HTTP? Это единственный способ предотвратить кэширование в Internet Explorer. - Вы используете Internet Explorer 4.01 с пакетом обновления 2 или более поздней версии? Невозможно полностью предотвратить кэширование в более ранних версиях браузера.
- Вы дважды проверили, включена ли функция HTTP 1.1 на вашем веб-сервере и возвращаются ли ответы HTTP 1.1 в Internet Explorer? Заголовки cache-Control недопустимы в ответах HTTP 1.0.
- Если вы используете CGI/ISAPI/сервлеты на стороне сервера, вы точно следуете спецификации HTTP 1.1, особенно в отношении CRLF-завершения заголовков HTTP? Ради повышения производительности Internet Explorer, как правило, строго относится к ответам, которые нарушают спецификацию HTTP 1.1. Обычно это приводит к пропущенным заголовкам или отчетам о непредвиденных ошибках сервера.
- Правильно ли написаны заголовки HTTP?
См. также
- Дополнительные сведения о протоколе HTTP 1.1 см. по этой внешней ссылке: RFC 2616.
- Кэш клиента в IIS