Я разработчик, столкнувшийся с проблемой на работе. Когда я создаю любое веб-приложение .Net (ASP.Net, ASP.Net MVC), развертываю его на IIS моего локального компьютера или как приложение интрасети на нашем сервере IIS интрасети и запускаю его в браузере, я получаю неожиданный результат: IE.
Обычно, когда вы впервые заходите на сайт, файлы загружаются и сохраняются в локальном кэше браузера. При последующих посещениях браузер отправляет запрос на сервер с файлами Etags или датой последнего изменения. Сервер может ответить HTTP 304, если файлы не изменились, что предотвратит полную передачу файла.
В моей рабочей сети это работает, как ожидалось, для всех браузеров. Кроме IE, который всегда возвращает HTTP 200 и, таким образом, снова загружает файл.
Я могу начать новый проект в Visual Studio, и кеширование отлично работает для других браузеров, но не для IE. Если я создаю один и тот же проект дома (на своем компьютере), кеширование работает нормально для всех браузеров. включая IE.
Это заставляет меня поверить, что что-то мешает процессу. Возможно, какая-то конфигурация IE (которая управляется групповой политикой, к которой у меня нет доступа, или, возможно, конфигурация IIS, к которой у меня снова нет доступа, или что-то еще.
У меня есть доступ к временным файлам IE, и я вижу, что файлы находятся в этой папке.
Что может быть причиной этого? Прежде чем обращаться к системным администраторам, мне нужна некоторая информация.
Заголовки под Fiddler
Вкладка Developer Tools Network
РЕДАКТИРОВАТЬ:
Вот новый проект, который я создал и разместил в Visual Studio IIS Express:
Первая загрузка IE:
Первая загрузка Firefox:
Вторая загрузка IE: Как мы видим, всех запросов 200, а общее время примерно такое же.
Вторая загрузка Firefox: Как мы видим, все запросы после основного - 304, а общее время меньше половины первой загрузки.
После работы над проблемой я обнаружил, что это произошло из-за инструментов разработчика Internet Explorer в IE 11.
Я узнал это, открыв одновременно Fiddler и Internet Explorer Developer Tools.
Если я нажму «Обновить», когда инструменты разработчика были открыты на вкладке «Сеть», инструменты разработчика и Fiddler зарегистрируют весь HTTP 200.
С другой стороны, если я нажму «Обновить», когда Dev Tool закрыт и Fiddler открыт, Fiddler зарегистрирует HTTP 304.
Так что именно Dev Tool заставляет браузер не использовать кеш. Как было предложено Сараванан в комментариях это конфигурация Dev-Tools в IE 11:
Этого не произошло, когда я попробовал те же тесты дома, потому что я использовал IE Edge дома и IE 11 на работе. Эта опция была изменена в Edge, что привело к разнице в результатах.