Есть ли способ заставить Internet Explorer не кэшировать конкретный сайт?

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

7 ответов

Вы проверили, что вы включили "перезагрузить при каждом посещении" в настройках IE?

Свойства обозревателя -> Общие -> История просмотра -> Настройки

Проверить: Каждый раз, когда я захожу на веб-страницу

Установите следующие заголовки HTTP:

Cache-Control: no-cache
Pragma: no-cache

Первый предназначен для HTTP 1.1, второй - для старых клиентов.

Если вы используете asp или aspx, попробуйте

<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>

Если другое место это в шапке

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

Сейчас я работаю над динамической страницей и обнаружил в IE 10 Preview, что не могу ее обновить. У меня есть следующие заголовки (взяты из View Source):

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">

Я также проверил настройки для самого IE и изменил URL для главной страницы (но не основные вызовы php, используемые страницей). Только когда я впервые запускаю его, он на самом деле обновляет страницу и показывает текущие данные. Я даже могу закрыть вкладку и открыть URL-адрес в новой вкладке, и она вызывает кешированные данные.

@ developer747 и @Sreeraj: мне пришлось использовать трюк со случайными числами, чтобы изменить URL для базовых запросов данных, поскольку они, очевидно, кэшировались, что в первую очередь противоречило цели использования xmlhttpRequest для извлечения динамического содержимого. FireFox, Chrome, Safari и Opera не нуждались в этой "хитрости".

У меня тоже была эта проблема, особенно с Internet Explorer 6, и у меня ее нет с Internet Explorer 8. Вот список вещей, которые нужно проверить, прежде чем исключить:

  • В меню "Сервис" - "Свойства обозревателя" - "Временные файлы Интернета" - "Настройки"... установите для проверки наличия новых версий сохраненных страниц "Каждое посещение страницы"
  • Прокси-серверы: если вы подключены через VPN или ваша компания использует прокси-сервер, перейдите на вкладку "Сервис" - "Свойства обозревателя" - "Подключение" и нажмите "Настройки ЛВС..." или "Настройки..." вместе с VPN-подключением. Отмените любые настройки прокси только для проверки.
  • Попробуйте разместить предложение Серхио в самом верху ваших страниц ASPX.
  • В конфигурации IIS щелкните правой кнопкой мыши веб-приложение, перейдите к свойствам, перейдите на вкладку "Заголовки HTTP" и установите для срока действия содержимого значение "Немедленно истекает". После этого рекомендуется перезапустить IIS, просто чтобы убедиться.

Если ничего из этого не работает, попробуйте разные версии Internet Explorer. У меня есть случай, когда я могу изменить поле и щелкнуть кнопку в моем веб-приложении, оно перезагружается с новым сохраненным полем и база данных обновляется. Затем я захожу в свое внутреннее приложение, вручную изменяю данные и сохраняю новое значение. Затем я возвращаюсь в свое веб-приложение, нажимаю в строке заголовка и нажимаю клавишу ввода, вызывая его перезагрузку. В IE6 обновленная страница отображает старые данные, но если я делаю это в IE8, то отображаются новые данные. В IE6 я могу сделать две вещи, чтобы он обновился: очистить временные файлы или изменить строку URL, добавив &a=123 в конец или что-то еще и нажав Enter. Мне ясно, что это ошибка в IE6 (я использую версию 6.0.3790.3959, и она говорит SP2).

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

Поскольку IE просматривает кэш по точному URL (включая строку запроса), он не находит кэшированные значения и, следовательно, получает новую страницу.

Вы просто изменяете URL-адрес обновления, добавляя текущее время в миллисекундах к URL-адресу. Поэтому каждый раз, когда страница обновляется, URL-адрес также изменяется с параметром time. Поэтому кэширование не вступит в силу.

var mSeconds = new Date().getTime() / 1000;
var url = 'www.mysite.com/test.do?time=' + mSeconds;
Другие вопросы по тегам