IE 8 и кэширование на стороне клиента

Предыстория:

У меня есть веб-портал в .NET 3.5 на IIS 6 веб-сервер. В настоящее время существует страница, которой присвоено значение, и на основе этого значения выполняется поиск файла PDF в веб-службе и отображение результатов для пользователя на другой вкладке веб-страницы. Это делается с помощью следующего кода.

 context.Response.ClearContent();
 context.Response.ClearHeaders();
 context.Response.Clear();
 context.Response.AddHeader("Accept-Header", pdfStream.Length.ToString());                                               
 context.Response.ContentType = "application/pdf";
 context.Response.BinaryWrite(pdfStream.ToArray());
 context.Response.Flush();

Это работает и работает годами. Однако мы получили сообщение от клиента о том, что конкретный клиент возвращал PDF-файл как один и тот же PDF-файл каждый раз, пока они не очистили временный интернет-кеш.

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

context.Response.Cache.SetCacheability(HttpCacheability.NoCache);//IE set to not cache
context.Response.Cache.SetNoStore();//Firefox/Chrome not to cache
context.Response.Cache.SetExpires(DateTime.UtcNow); //for safe measure expire it immediately 

После быстрого теста я получил именно то, что ожидал в заголовке ответа.

Cache-Control    no-cache, no-store 
Pragma    no-cache 
Expires    -1 

Проблема:

Итак, это было запущено. В первый день все казалось крутым. На следующий день, бац, у всех начались белые экраны, а PDF-файлы не отображались. После дальнейшего расследования выяснилось, что это был только IE 6,7,8. Chrome в порядке, Firefox в порядке, сафари в порядке, даже IE 9 в порядке. Не зная, почему это произошло, я отменил свое изменение и развернул его, и все снова заработало.

Я искал повсюду, пытаясь выяснить, почему мои заголовки кеширования, похоже, сбивают с толку IE 6-8, но безрезультатно. Кто-нибудь сталкивался с подобными проблемами с IE 6-8? Что-то мне не хватает? Спасибо за понимание.

7
задан Etch 1 December 2011 в 20:58
поделиться