2010-06-14 14 views
5

Tengo una página html que está cargando múltiples iframes en los cuales están las imágenes dinámicas integradas creadas desde una página del servidor Tomcat (.jsp). Esto funciona como se esperaba de Chrome y Firefox, pero por alguna razón IE muestra todas las imágenes de la misma (como la primera imagen). He creado un ejemplo:
Problema de caché de imagen dinámica de IE?

http://coupondiscounts.com/jsImageTest.html

jsImageTest.html - Esta página simplemente carga 6 casos de la página testImageFrame.html en marcos flotantes separados uno-a-un-tiempo, utilizando Javascript.
testImageFrame.html - Esta es la página cargada en todos los iframes. Contiene solo un bloque JavaScript que escribe la hora actual y una etiqueta img. El img se genera dinámicamente por una página .jsp en un servidor diferente. Debe ser una caja blanca sobre un fondo negro. En el cuadro son la hora actual (desde el servidor Tomcat usando Java) y un doble creados al azar entre 0 & 1.

¿Qué ocurre (en IE): La página se carga casi instantáneamente cuatro marcos flotantes idénticas. Dependiendo de la velocidad de su máquina, los tiempos de JavaScript pueden variar por uno o dos segundos. Los tiempos de las imágenes serán los mismos que el número aleatorio. Esto es válido incluso para los dos últimos iframes que se cargan 5 y 10 segundos después de los demás (utilizando JavaScript setTimeout()).
Qué debe ocurrir (como lo hace en Chrome y FF): La página de carga los mismos 4 iframes, pero los números aleatorios en las imágenes será diferente. Los tiempos en las imágenes ocasionalmente abarcan un segundo también.

¿Alguien tiene una pista de lo que está pasando aquí? ¿IE está haciendo un caché extraño? El encabezado de la imagen tiene "no-cache", "no-store" y todo eso. Lo probé en IE6 y 7. Puedes usar el botón "Siguiente" para crear otro iframe. En IE, las imágenes son siempre las mismas.

Notas: Realmente no necesito iframes, solo las imágenes, pero si solo uso etiquetas img, el problema aparece en Chrome y FF también. Además, realmente no necesito cargar estos iframes de forma dinámica, solo estaba tratando de abstraer más el tema y permitir una carga retrasada para las últimas 2 imágenes.

Respuesta

0

Pasar una variable de corte de caché o establecer un encabezado sin caché.

IE (sin doble sentido)

<% 
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 
%> 
+0

-1 como OP ya indicó que han intentado estos pasos. – Jaymz

+0

... Undid downvote para setDateHeader :) – Jaymz

+1

También dije una variable de corte de caché. Muchos navegadores no almacenan en caché una página con '?' En la url. Entonces él podría usar: http://hostname.com/mypage.jsp?time = alguna vez Edit: TY :) –

1

MSIE es excelente cuando se trata de almacenamiento en caché. El problema aquí es que no cumple las instrucciones de almacenamiento en caché como se especifica en los encabezados de la página HTML "principal" desde donde se ejecuta el código JS.

Su problema particular se puede resolver agregando una marca de tiempo a la cadena de consulta.

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

Este fuerzas MSIE para disparar una nueva petición GET marca de JS sucesivamente.

+0

Esta parece ser la misma respuesta que ya hemos discutido. – rdevitt

+0

Si esto no resolvió el problema, entonces tal vez necesite borrar el caché antes de volver a probar :) – BalusC