IE неправильно использует свой локальный кеш для сайтов интрасети и возвращает HTTP 200 вместо HTTP 304

Я разработчик, сталкивающийся с проблемой на работе. Когда я создаю любое веб-приложение .Net (ASP.Net, ASP.Net MVC), развертываю его на IIS моего локального компьютера или как приложение интрасети на нашем сервере IIS интрасети и запускаю его в браузере, я получаю неожиданный результат: IE.

Обычно, когда вы впервые обращаетесь к сайту, файлы загружаются и сохраняются в локальном кэше браузера. При последующих посещениях браузер отправляет на сервер запрос с файлами Etags или датой последнего изменения. Сервер может ответить HTTP 304, если файлы не изменились, что предотвратит полную передачу файла.

В моей рабочей сети это работает, как ожидалось, для всех браузеров , кроме IE, который всегда возвращает HTTP 200 и, таким образом, снова загружает файл.

Я могу начать новый проект в Visual Studio, и кеширование отлично работает для других браузеров, но не для IE. Если я создаю один и тот же проект дома (на своем компьютере), кеширование работает нормально для всех браузеров , включая IE.

Это заставляет меня поверить, что что-то мешает процессу. Возможно, некоторая конфигурация IE (которая контролируется групповой политикой, к которой у меня нет доступа, или, возможно, конфигурацией IIS, к которой у меня снова нет доступа, или что-то еще.

У меня есть доступ к временным файлам IE, и я могу видеть что файлы присутствуют в этой папке.

Что может быть причиной этого? Мне нужна некоторая информация, прежде чем обращаться к системным администраторам.

Заголовки в Fiddler

Headers under Fiddler

Вкладка Developer Tools Network

Developer Tools Network tab

EDIT:

Вот новый проект, который я создал и разместил в Visual Studio IIS Express: enter image description here

Первая загрузка Firefox: enter image description here

IE Вторая загрузка: enter image description here Как мы видим, всех запросов 200, а общее время примерно такое же.

Вторая загрузка Firefox: enter image description here Как мы видим, все запросы после основного - 304, а общее время меньше половины первой загрузки.

0
задан 6 October 2016 в 23:35
1 ответ

После работы над проблемой я обнаружил, что это связано с Internet Explorer Developer Tools в IE 11.

Я выяснил это, открыв одновременно Fiddler и Internet Explorer Developer Tools.

Если я нажму кнопку "Обновить" во время открытия вкладки "Инструменты разработчика", то Fiddler и Dev Tools зарегистрируют все HTTP 200.

С другой стороны, если я нажму кнопку "Обновить" во время закрытия Dev Tool и открытия Fiddler, то Fiddler зарегистрирует HTTP 304.

Так что это Dev Tool заставляет браузер не использовать кэш. Как предполагает Saravanan в комментариях, это конфигурация в Dev-Tools в IE 11:

Internet Explorer - Dev Tools - always refresh from server

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

.
3
ответ дан 4 December 2019 в 12:22

Теги

Похожие вопросы