Есть ли способ заставить Internet Explorer не кэшировать конкретный сайт?
Я создаю веб-страницу, и всякий раз, когда я обновляю ее или перемещаюсь со страницы на страницу, она просто перезагружает значения кэша. Но я не хочу, чтобы это делалось, потому что я работаю с динамическими данными (из базы данных), поэтому я хочу, чтобы он перезагружал значения из базы данных при каждом обновлении или при любой обработке страницы. И я не имею в виду просто очистить кеш браузера. Я не хочу, чтобы мои конечные пользователи приходили в Сервис каждый раз, когда они используют мое приложение.
7 ответов
Вы проверили, что вы включили "перезагрузить при каждом посещении" в настройках IE?
Свойства обозревателя -> Общие -> История просмотра -> Настройки
Проверить: Каждый раз, когда я захожу на веб-страницу
Если вы используете 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;