Stiamo avendo uno strano problema su cui non siamo sicuri di cosa lo causano esattamente. Lasciatemi elaborare il problema. Supponiamo, abbiamo due diverse pagine html a.html e b.html. E un piccolo script scritto in index.html:
function reloadFrame(iframe, src) { iframe.src = src; }
Un componente server aggiorna continuamente entrambi i file a.html e b.html. Il problema è che il contenuto di entrambi i file si sta aggiornando con successo sul lato server. Se apriamo, possiamo vedere le modifiche aggiornate, ma il client ottiene il contenuto precedente che non mostra le modifiche aggiornate.
Qualche idea?
Aggiungi questo in a.html e b.html
Per forzare nessun controllo della cache
Se è ansible aggiungere istruzioni sul lato server a tali file HTML, è ansible inviare le intestazioni appropriate per impedire la memorizzazione nella cache:
Assicurarsi che una pagina web non sia memorizzata nella cache, su tutti i browser (penso che il consenso sia che la seconda risposta è la migliore, non quella accettata)
La risposta di Simone ha già a che fare con i meta tag.
Un trucco rapido economico consiste nell’aggiungere un numero casuale come parametro GET:
page_1.html?time=102398405820
se questo cambia ad ogni richiesta (es. usando l’ora corrente), ricaricando si impone anche ogni volta.
Prova qualcosa come il seguente:
Ciò costringerà l’iframe a essere ricaricato anche se è stato memorizzato nella cache dal browser
La soluzione di Homero Barbosa ha funzionato come un fascino. Nel mio caso, ho avuto un numero variabile di iframe nella pagina, quindi ho fatto quanto segue:
$('.some_selector').each(function () { var $randid = Math.floor(Math.random() * 101); $(this).attr({'id': 'goinOnaSafari-' + $randid}); var $frame = document.getElementById('goinOnaSafari-' + $randid); $frame.contentWindow.location.href = $frame.src; });
Per una ansible soluzione a questo, passa un “parametro cache” alle chiamate a a.html e b.html. Per esempio
HTML
Javascript
function cacheSafeReload(urlBase) { var cacheParamValue = (new Date()).getTime(); var url = urlBase + "?cache=" + cacheParamValue; reloadFrame(document.getElementById('myFrame'), url); }