Отключение кэширования в приложении Internet Explorer

Переводы статьи Переводы статьи
Код статьи: 234067 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

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

С помощью IIS (Internet Information Server) можно легко отметить непостоянные или чувствительные страницы, используя следующую программу в самом начале определенных страниц ASP (Active Server Pages):
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
				

Дополнительная информация

Истечение срока и заголовок Expires

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

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

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

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

Заголовок 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 META

Страницы 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 предотвращает кэширование только при использовании защищенного соединения. При использовании незащищенного соединения тег META заголовка Pragma: no-cache действует аналогично заголовку Expires: -1. Страница будет кэшироваться, но будет отмечена как немедленно устаревшая.

Теги META HTTP-EQUIV заголовка Cache-Control игнорируются и не имеют никакого эффекта в версиях Internet Explorer 4 или 5. Для использования Cache-Control этот заголовок должен определяться с помощью заголовков HTTP в соответствии с данными раздела о заголовке Cache-Control в начале статьи.

Следует иметь в виду, что намного предпочтительнее использовать стандартные заголовки HTTP, а не теги META. Как правило, теги META должны появляться в начале раздела HTML HEAD. Существует по крайней мере одна распространенная проблема, связанная с использованием META-тега Pragma HTTP-EQUIV. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
222064 Тег Pragma: No-cache не предотвращает кэширование страницы (эта ссылка может указывать на содержимое полностью или частично на английском языке)
Параметры сервера для кэширования При необходимости использования заголовка Cache-Control с другими страницами, кроме страниц ASP, для автоматического добавления этого заголовка, возможно, потребуется использовать параметры настройки сервера. Описание процесса добавления заголовков HTTP в отклики сервера для определенного каталога можно найти в документации сервера. Например, в IIS 4 выполните следующие действия.
  • Запустите диспетчер служб Интернета.
  • С помощью дерева служб откройте веб-сервер по умолчанию (либо необходимый веб-сервер) и найдите каталог с содержимым, требующим наличия заголовка 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/Servlets, вы точно следуете спецификациям HTTP 1.1 – в частности, в отношении завершения CRLF заголовков HTTP? В интересах производительности Internet Explorer, как правило, не реагирует на отклики, не соответствующие спецификации HTTP 1.1. Это обычно приводит к игнорированию заголовков и отчетов о непредвиденных ошибках сервера.
  • Нет ли ошибок в заголовке HTTP?

Ссылки

Дополнительные сведения см. в следующих статьях базы знаний Майкрософт.
189409 Контроль кэширования веб-страниц с помощью IIS 4.0 (эта ссылка может указывать на содержимое полностью или частично на английском языке)
165150 Использование заголовка Pragma: No-cache с IIS и IE (эта ссылка может указывать на содержимое полностью или частично на английском языке)
Дополнительную информацию о HTTP/1.1 можно получить на веб-узле:
http://www.w3.org/Protocols/rfc2616/rfc2616.html

Свойства

Код статьи: 234067 - Последний отзыв: 7 сентября 2005 г. - Revision: 4.1
Информация в данной статье относится к следующим продуктам.
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 6.0
  • Microsoft Internet Explorer 6.0 Service Pack 1
Ключевые слова: 
kbhowto kbcaching kbfaq KB234067

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com