2010-06-14 18 views
5

Ho una pagina html che carica più iframe in cui sono incorporate immagini dinamiche create da una pagina server Tomcat (.jsp). Funziona come previsto da Chrome e Firefox, ma per qualche motivo IE mostra tutte le immagini allo stesso modo (come la prima immagine). Ho creato un esempio:
Problema di memorizzazione nella cache delle immagini dinamiche di IE?

http://coupondiscounts.com/jsImageTest.html

jsImageTest.html - Questa pagina semplicemente carica 6 istanze della pagina testImageFrame.html in iframe separati uno-a-un-tempo, utilizzando Javascript.
testImageFrame.html - Questa è la pagina caricata in tutti gli iframe. Contiene solo un blocco JavaScript che scrive l'ora corrente e un tag img. L'immagine viene generata dinamicamente da una pagina .jsp su un server diverso. Dovrebbe essere una scatola bianca su sfondo nero. Nella scatola sono l'ora corrente (dal server Tomcat utilizzando Java) e una creata in modo casuale doppia tra 0 & 1.

Cosa succede (in IE): La pagina di carica quasi istantaneamente quattro iframe identici. A seconda della velocità della tua macchina, i tempi di JavaScript possono variare di un secondo o due. I tempi delle immagini saranno tutti uguali a quelli del numero casuale. Ciò vale anche per gli ultimi due iframe che vengono caricati 5 e 10 secondi dopo gli altri (utilizzando JavaScript setTimeout()). Cosa dovrebbe accadere (come in Chrome e FF): La pagina carica gli stessi 4 iframe, ma i numeri casuali nelle immagini saranno diversi. I tempi nelle immagini si estendono occasionalmente anche per un secondo.

Qualcuno ha idea di cosa sta succedendo qui? IE sta facendo qualche strana memorizzazione nella cache? L'intestazione dell'immagine ha "no-cache", "no-store" e tutto il resto. L'ho provato su IE6 e 7. È possibile utilizzare il pulsante "Avanti" per creare un altro iframe. In IE, le immagini sono sempre le stesse.

Note: Non ho davvero bisogno di iframe, solo le immagini, ma se uso solo i tag img, il problema si presenta anche in Chrome e FF. Inoltre, non ho davvero bisogno di caricare questi iframe in modo dinamico, stavo solo cercando di astrarre ulteriormente il problema e di consentire un carico ritardato per le ultime 2 immagini.

risposta

0

Passare una variabile di interruzione della cache o impostare un'intestazione senza cache.

IE (no pun intended)

<% 
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 come OP già affermato hanno provato questi passaggi. – Jaymz

+0

... Undid downdota per setDateHeader :) – Jaymz

+1

Ho anche detto una variabile di interruzione della cache. Molti browser non memorizzano nella cache una pagina con '?' Nell'URL. Quindi potrebbe usare: http://hostname.com/mypage.jsp?time = sometime Edit: TY :) –

1

MSIE è fantastico quando si tratta di caching. Il problema qui è che non aderisce alle istruzioni di cache come specificato nelle intestazioni della pagina HTML "parent" da cui viene eseguito il codice JS.

Il tuo problema particolare può essere risolto aggiungendo un timestamp alla stringa di query.

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

Questo forze MSIE al fuoco una nuova richiesta GET da JS su.

+0

Questa sembra essere la stessa risposta che abbiamo già discusso. – rdevitt

+0

Se ciò non risolve il problema, forse è necessario svuotare la cache prima di ripetere i test :) – BalusC

Problemi correlati