Как заставить Internet Explorer (IE) действительно перезагрузить страницу?

154

При использовании Internet Explorer 8 для тестирования моего веб-приложения я часто обнаруживаю, что оно не перезагружает страницу, поэтому я не вижу своих изменений. Это привело к тому, что я потерял много времени и разочаровался, задаваясь вопросом, почему мое исправление «не сработало», хотя на самом деле браузер никогда не загружал фиксированную версию.

Я пробовал кнопку Обновить. Я пробовал F5, Control- F5, Control- R, Control- Shift- R, удерживая Controlпри нажатии кнопку «Обновить», все, о чем я мог подумать - он фактически не загружает новое содержимое с сервера. Я подтвердил это с Fiddler.

Как мне сказать IE " Мне все равно, что вы думаете, что вы кэшировали, я хочу перезагрузить страницу - нет, правда, я имею в виду это на этот раз, честно говоря, я хочу, чтобы вы на самом деле пошли на сервер и скачать все снова "?

EMP
источник
2
Может быть, вы используете личное окно просмотра?
Джош Ли
3
Возможно ли, что ваш веб-сервер обслуживает старую страницу (через кеш) вместо новой версии? Не имеет значения, сколько раз вы перезагрузитесь в этом случае.
Майкл Тодд
1
Майкл, нет, я проверил в Fiddler, что IE не получает содержимое страницы с сервера.
EMP
Control + F5 проходит мимо кеша, странно, если нет ....
Тамара Вийсман
2
Лучшая формулировка вопроса, с которым я столкнулся на StackExchange!
user785529

Ответы:

126
  1. Выберите Инструменты >> Свойства обозревателя .
  2. Нажмите кнопку Настройки в Истории просмотра .
  3. Выберите переключатель Каждый раз, когда я посещаю веб-страницу .
  4. Нажмите кнопку ОК, чтобы закрыть диалоговое окно «Настройки».
  5. Нажмите кнопку ОК, чтобы закрыть диалоговое окно «Свойства обозревателя».
Гонсало
источник
3
Если это то, что вы сделали, отметьте это как ответ
Earlz
34
Это может повлиять на общую производительность браузера, но только в том случае, если вы делаете общий просмотр с помощью IE ...
Джоэл Мюллер
3
Ev: сторона, обращенная к пользователю, обычно исправляется путем изменения URL-адресов для всех скриптов и таблиц стилей каждый раз, когда вы прикасаетесь к коду, обычно путем добавления ?version-numberсуффикса строки запроса.
bobince
4
«Каждый раз, когда я захожу на веб-страницу», вероятно, не делает то, что вы думаете, что делает. См. Fiddler2.com/redir/?id=httpperf
EricLaw
6
Я согласен с @EricLaw: если вы используете Fiddler, вы увидите, что файлы, связанные с этой страницей, иногда не перезагружаются, даже если установлен параметр «Каждый раз, когда я посещаю веб-страницу». Используйте меню панели инструментов IE: «Кэш»> «Всегда обновлять с сервера» или кнопку «Очистить кэш» в Fiddler.
Филипп Нган
43

Поскольку заявлено, что IE8 является браузером, вы можете нажать, F12чтобы открыть инструменты разработки и выбрать меню «Кэш» вверху, а затем всегда обновляться с сервера, чтобы обойти кэш.

Короче, нажмитеF12 . Нажмите Кэш -> Всегда обновлять с сервера

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

IE7 также имеет инструменты разработки, но они должны быть установлены отдельно. Вы также можете использовать инструменты разработки IE8 для запуска браузера в режиме IE7.

Brandon
источник
+1 за решение этой проблемы без использования глобальной опции.
Маркус Ример
Как и здесь , это не всегда обновляет весь контент. И я не знаю, что эта перезагрузка хороша и для URL-адресов - каждое окно иногда имеет свой F12. Это более тщательный способ, если, если у вас есть доступ к Javascript include.
Ерф
1
Как вы делаете это в IE 11? Там нет опции кеша я могу найти.
Дэвид Тилен
4
В IE 11 эта опция находится под F12 -> Сеть -> 3-й значок слева.
День
22

Ctrl+ F5в IE перезагружает страницу игнорируя кеш

mfeingold
источник
26
Нет, это не так. Я знаю, что он игнорирует кеш иногда, но не всегда.
EMP
16
Ctrl + f5 всегда перезагружает страницу с сервера. То, что это не обязательно делает, является перезагрузкой дополнительных файлов, на которые ссылается страница
2
Справедливо, но мне нужно, чтобы перезагрузить все.
EMP
1
CTRL + F5 должен выполнить полное обновление страницы и всех ее ресурсов. Вызовы, сделанные через XMLHTTPRequest позже, могут быть кэшированы (если вы не хотите, чтобы они кэшировались, отправьте соответствующие заголовки без кэширования). Единственное предостережение в том, что если рассматриваемая страница представляет собой XML, она действительно загружается через MSXML, и что DocHost НЕ уважает CTRL + Refresh должным образом.
EricLaw
3
Ctrl + F5 не всегда перезагружает все с сервера. В моих тестах javascript, содержащийся в html-файле, не перезагружался после нажатия ctrl-f5, даже если страница изменилась.
rcarver
18

IE очень хочет кешировать страницы, даже если вы говорите, что это не нужно делать через заголовки кеша. Microsoft KB 234067 объясняет необходимые заклинания. Короче говоря, вам нужно поставить следующие заголовки.

Pragma: no-cache
Cache-Control: no-cache
Expires: <some time in the past>

Настройка Expires = -1(как рекомендуется в статье базы знаний) должна работать для большинства фреймворков; браузеры должны обрабатывать недопустимые форматы дат как устаревшие ( RFC 2616 ).

В .NET вы можете сделать это на постраничной детализации, используя этот набор методов перед вызовом веб-страницы:

HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Response.Cache.SetValidUntilExpires(false);
HttpContext.Response.Cache.SetRevalidation(System.Web.HttpCacheRevalidation.AllCaches);
HttpContext.Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
HttpContext.Response.Cache.SetNoStore();

см .: http://www.localwisdom.com/blog/2012/10/force-a-page-refresh-on-a-asp-net-mvc-website/ Хорошо работает для MVC3.0.

Марсело Кантос
источник
1
Неправда. IE6 + полностью учитывает все запрещающие кеш заголовки. fiddler2.com/redir/?id=httpperf
EricLaw
Это все очень хорошо, но не помогает WRT в вопросе.
Матиас Урлих
6

На вкладке «Сеть» панели инструментов веб-разработчика есть кнопка, позволяющая легко очистить кэш. Я обычно использую это в случае, если вы описываете.

Это не идеально, так как вы, возможно, на самом деле не хотите очищать весь кеш, но, поскольку я не использую IE для общего просмотра, это работает для меня.

pkaeding
источник
4

Это все еще происходит в IE9. Удивительно, но ответ Ctrl- Shiftкнопка «Обновить»

PandaWood
источник
Работает ли это иначе, чем кнопка Ctrl-Refresh?
Джон Онстотт
3

Кстати, проблема, возможно, будет существовать и для зрителей вашего сайта. Я увидел следующую идею в книге AJAX ...

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

Моше
источник
Тем не менее, делает URL-адреса ужасными.
LawrenceC
2

У меня была такая же проблема сама. Я считаю, что единственный способ сделать это - очистить кеш (Безопасность -> Удалить историю просмотров). Только отметьте «Временные интернет-файлы».

Надеюсь это поможет.

jchapa
источник
2

Удерживая нажатой клавишу altили ctrl, нажмите кнопку обновления.

niaccm
источник
1

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

Помимо подхода со случайным токеном, который я обычно делаю для принудительной полной перезагрузки (запроса) страницы и всех ее зависимых файлов, я просто помещаю курсор в конец URL и нажимаю Enter. Работает каждый раз ... и я использую IE 8.

Джерри
источник
1

F12-> CTRL+ Rнемного быстрее для IE9 +. Как уже упоминалось, IE не очень хорошо очищает кэш, как это делает Chrome.

Крис С
источник
1

Я знаю, это может показаться немного странным ... но в последнее время я заметил одну вещь: иногда вы получаете разные результаты в зависимости от того, КАК вы "обновляете". Я видел следующее поведение:

F5> загружает из кеша без обновления,
Alt+ D, ENTER> действительно обновляет в обход кеша.
( Alt+ Dможно заменить нажатием в адресной строке)

eidylon
источник