Я в конце концов понял это.Вот объяснение и проверенное решение.
Следующий сайт подтверждает мои наблюдения: http://blog.httpwatch.com/2008/10/15/two-important-differences-between-firefox-and-ie-caching/
Он говорит, что IE не хранит локально страницы с директивой no-cache и, следовательно,всегда отправляет безусловный запрос.
Есть также статья поддержки MS - https://support.microsoft.com/help/234067/, которая подтверждает это:
"Internet Explorer поддерживает заголовок HTTP 1.1 Cache-Control, который предотвращаетвсе кэширование конкретного веб-ресурса, когда указано значение отсутствия кэширования ... "
Это поведение не является полностью неправильным - но это не то, что предназначено в RFC 2616 (с. 14.9.1).О «no-cache» говорится: «... кеш НЕ ДОЛЖЕН использовать ответ для удовлетворения последующего запроса без успешной повторной проверки на исходном сервере».Таким образом, ответ МОЖЕТ быть кэширован, но ДОЛЖЕН повторно подтвердить его.Основные браузеры, кроме IE, кэшируют ответ и повторно проверяют его.Чтобы предотвратить сохранение запроса, существует директива Cache-Control 'no-store'.
В итоге IE обрабатывает 'no-cache' как 'no-store'.
А вот решение для согласованного включения условных запросов для IE и других браузеров :
Не используйте no-cache, вместо этого установите заголовок Expires напрошлое (или -1, что имеет тот же эффект).IE, как и другие крупные браузеры, будет отправлять условные запросы.(Обратите внимание, вы также должны знать об ошибке заголовка IE Vary, которая препятствует кешированию.)
Это критические поля заголовка:
Last-Modified: Wed, 16 Feb 2011 13:52:26 GMT
Expires: -1
Cache-Control: must-revalidate, private
- Last-Modified (илиETag) необходим в качестве валидатора
- Expires -1 говорит о том, что ресурс устарел и должен быть повторно валидирован
- Cache-Control не должен включать no-cache или no-store