IE кеширование динамических изображений? - PullRequest
5 голосов
/ 15 июня 2010

У меня есть html-страница, которая загружает несколько фреймов, в которые встроены динамические изображения, созданные со страницы сервера Tomcat (.jsp). Это работает, как ожидается от Chrome и Firefox, но по какой-то причине IE отображает все изображения одинаково (как первое изображение). Я создал пример:

http://coupondiscounts.com/jsImageTest.html

jsImageTest.html - Эта страница просто загружает 6 экземпляров страницы testImageFrame.html в отдельных фреймах по одному, используя Javascript.
testImageFrame.html - это страница, загружаемая во все фреймы. Он содержит только блок JavaScript, который записывает текущее время и тег img. IMG динамически генерируется страницей .jsp на другом сервере. Это должна быть белая коробка на черном фоне. В этом окне указывается текущее время (с сервера Tomcat, использующего Java) и случайно созданный дубль между 0 и 1.

Что происходит (в IE): Страница почти мгновенно загружает четыре идентичных фрейма. В зависимости от скорости вашего компьютера время JavaScript может меняться на одну или две секунды. Время изображения будет таким же, как и случайное число. Это верно даже для последних двух iframe, которые загружаются через 5 и 10 секунд после остальных (используя JavaScript setTimeout ()).
Что должно произойти (как это происходит в Chrome и FF): На странице загружаются те же 4 фрейма, но случайные числа на изображениях будут другими. Время на изображениях также иногда занимает одну секунду.

Кто-нибудь знает, что здесь происходит? IE делает какое-то странное кеширование? Заголовок изображения имеет «no-cache», «no-store» и все такое. Я пробовал это на IE6 и 7. Вы можете использовать кнопку «Далее», чтобы создать еще один iframe. В IE изображения всегда одинаковы.

Примечания: Мне действительно не нужны iframes, только изображения, но если я использую только теги img, проблема возникает также в Chrome и FF. Мне также не нужно загружать эти iframes динамически, я просто пытался абстрагировать проблему дальше и разрешить отложенную загрузку для последних 2 изображений.

Ответы [ 2 ]

1 голос
/ 15 июня 2010

MSIE потрясающ, когда дело доходит до кеширования.Проблема здесь в том, что он не придерживается инструкций кэширования, как указано в заголовках «родительской» HTML-страницы, с которой выполняется код JS.

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

ifr.src = 'testImageFrame.html?' + new Date().getTime();

Это заставляет MSIE запустить новый запрос GET от JS on.

0 голосов
/ 15 июня 2010

Передайте переменную, нарушающую кеш, или установите заголовок без кеша.

IE (без каламбура)

<%
response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...