Comment voulez-vous empêcher Firefox et Safari de mise en cache de contenu de l'iframe?
J'ai une simple page web avec une iframe à une page sur un site différent. À la fois l'extérieur de la page et la page intérieure ont-têtes de réponse HTTP pour empêcher la mise en cache. Lorsque je clique sur le bouton "retour" dans le navigateur, à l'extérieur de la page fonctionne correctement, mais peu importe, le navigateur récupère toujours un cache de la iframed page. IE fonctionne très bien, mais Firefox et Safari m'en difficulté.
Ma page ressemble à quelque chose comme ceci:
<html>
<head><!-- stuff --></head>
<body>
<!-- stuff -->
<iframe src="webpage2.html?var=xxx" />
<!-- stuff -->
</body>
</html>
L' var
variable change toujours. Malgré le fait que l'URL de l'iframe a changé (et donc, le navigateur devrait être de faire une nouvelle demande à la page), le navigateur récupère le contenu mis en cache.
J'ai examiné les requêtes et réponses HTTP et va-et-vient, et j'ai remarqué que même si l'extérieur de la page contient <iframe src="webpage2.html?var=222" />
, le navigateur va alors récupérer webpage2.html?var=111
.
Voici ce que j'ai essayé jusqu'à présent:
- Changer iframe URL aléatoire var valeur
- L'ajout d'Expiration, Cache-Control, et Pragma-têtes à l'extérieur de la page web
- L'ajout d'Expiration, Cache-Control, et Pragma-têtes à l'intérieur de la page web
Je ne suis pas en mesure de faire toutes les astuces JavaScript parce que je suis bloquée par la même la politique de l'origine.
Je suis à cours d'idées. Personne ne sait comment arrêter le navigateur de mise en cache de la iframed contenu?
Mise à jour
J'ai installé Fiddler2 que Daniel a suggéré d'effectuer un autre test, et malheureusement, je reçois toujours le même résultats.
C'est le test que j'ai effectué:
- Externe page génère le nombre aléatoire à l'aide de
Math.random()
en JSP. - Externe page affiche nombre aléatoire sur la page web.
- Externe les appels en page iframe, passant de nombre aléatoire.
- Intérieure page affiche nombre aléatoire.
Avec ce test, je suis en mesure de voir exactement quelles sont les pages de mise à jour, et les pages sont mises en cache.
Test Visuel
Pour un test rapide, je charge la page, accédez à une autre page, puis appuyez sur "retour". Voici les résultats:
Page D'Origine:
- Externe Page: 0.21300034290246206
- Intérieure Page: 0.21300034290246206
Quitter la page, puis en appuyant sur retour:
- Externe page: 0.4470929019483644
- Intérieure page: 0.21300034290246206
Cela montre que l'intérieur de la page est mise en cache, même si l'extérieur de la page est de l'appeler avec un autre paramètre GET dans l'URL. Pour une raison quelconque, le navigateur est en ignorant le fait que l'iframe est de demander un nouveau URL; il a simplement charges de l'ancien.
Fiddler Test
Bien sûr, le Violoneux, confirme la même chose.
(Je charge la page.)
Externe page est appelée. HTML:
0.21300034290246206
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206" />
http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206 est appelé.
(Je naviguez à partir de la page et ensuite frapper en retour.)
Externe page est appelée. HTML:
0.4470929019483644
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.4470929019483644" />
http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206 est appelé.
Eh bien, à partir de ce test, il semble que si le navigateur web n'est pas mise en cache de la page, mais il cache l'URL de l'iframe et ensuite faire une nouvelle demande sur la mise en cache de l'URL. Cependant, je suis toujours perplexe quant à la façon de résoudre ce problème.
Quelqu'un a une idée sur la façon d'arrêter le navigateur web à partir de la mise en cache iframe Url?