2009-07-07 7 views
2

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

+0

Какой серверный язык вы используете? –

+0

Я использую JavaScript с jQuery и Java Servlet с PL/SQL для извлечения значений из базы данных. – Corrine

ответ

3

Если вы используете осина или 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"> 
+0

Я уже сделал это, но он не работает. Он по-прежнему загружает данные из кеша. – Corrine

6

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

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

first one является для HTTP 1.1, second one для более старых клиентов.

+0

Это тоже не работает. Любые другие идеи? – Corrine

+0

@Corrine Маловероятно, что IE имеет такую ​​заметную ошибку, которая до сих пор осталась незамеченной. Вы уверены, что отправляете правильные заголовки? Пожалуйста, отправьте образец запроса и ответа. Происходит ли такое же поведение на пустой странице без вашего кода? На http://stackoverflow.com? Если это не так и stackoverflow (или демонстрационная страница), просто сравните свои заголовки и те, которые работают. – phihag

8

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

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

Проверил: Everytime I посетить веб-страницу

+0

спасибо, это сработало для меня, когда я тестировал страницу в IE. –

0

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

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

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

0

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

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

0

Вы просто изменить освежающий URL путем добавления текущего времени в миллисекундах до url.So каждый раз, когда страница обновляется, то URL также изменяется со временем кэширования parameter.So не вступит в силу ..

var mSeconds = new Date().getTime()/1000; 
var url = 'www.mysite.com/test.do?time=' + mSeconds; 
0

Теперь я работаю над динамической страницей и нашел с 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 не нуждались в этом «трюке».

+0

Хотя мне жаль, что у вас есть эта проблема, на самом деле это не ответ на вопрос. – Jelle

Смежные вопросы