La prévention de l'iframe de la mise en cache dans google Chrome
J'ai un émulateur que j'ai écrit pour le test smart TV web apps. L'émulateur lui-même est une application web, avec une interface simple, montrant une TÉLÉVISION et de la distance, et des charges de l'application web d'être testé dans un iframe. Utilisateurs de lancer l'émulateur à partir de la ligne de commande, qui démarre deux simples serveurs HTTP (un pour l'émulateur, l'un pour l'application web mis à l'essai), puis démarrage de google chrome à l'aide de l' --app commutateur de ligne de commande pointant vers mon émulateur.
Le problème est que chaque fois que Chrome se lance, il charge une version mise en cache de l'application web. Si vous avez apporté des modifications à votre application web depuis le dernier lancement, ils ne sont pas affichés jusqu'à ce que vous faire un rafraîchissement de la page.
Pour contourner ce problème, j'ai essayé le suivant:
- Le lancement de google Chrome avec l'ajout de l'option --disable-cache de l'interrupteur
- Ajoutant un hasard requête param pour le démarrage de l'URL passée à google chrome (ex:
--app=http://localhost:6001/?random={some_hash}
) - Ajoutant un hasard requête de paramètre à l'application web de l'URL spécifiée dans l'iframe
Aucune de ces semblent faire l'affaire, cependant. L'émulateur de code ne semble pas être mis en cache dans l'URL de src de l'iframe en effet, d'obtenir une nouvelle valeur aléatoire ajouté ça à chaque fois. Néanmoins, la page chargée dans l'iframe est vieux, et nécessite toujours un rafraîchissement après le lancement initial.
Toutes les autres choses que je peux essayer que je n'ai pas couverts ci-dessus?
Autre exemple de question:
- Utilisateur lance l'émulateur pour la première fois pour web app 1
- Web app 1 montré dans l'émulateur
- Utilisateur ferme émulateur
- Utilisateur lance l'émulateur pour web app 2
- Web app 1 montré dans l'émulateur
Dans ce cas, l'émulateur de lancement et montrent encore une web app 1. Il continue de montrer des web app 1 par rafraîchit jusqu'à ce que l'utilisateur effectue un rafraîchissement (cmd+maj+r), à quel point la web app 2 enfin affiche.
Bon point. Si je ne suis pas sûr de savoir comment j'allais. L'émulateur est emballé comme un rubis bijou et je suis à l'aide de webrick que le serveur http. Je suppose que j'ai une recherche sur google pour le faire.
Ceci c'est une page intéressante.
Donc, juste pour mettre à jour, j'ai modifié mon serveur en-têtes de réponse à inclure tous les possibles de la directive pour désactiver la mise en cache (ETag, de Dernière modification, le Contrôle du Cache, de l'échéance, Pragma) et il n'a pas fait l'affaire. Bug dans google Chrome, la manipulation de l'iframe?
OriginalL'auteur Danny | 2014-09-08
Vous devez vous connecter pour publier un commentaire.
Il semble que cela pourrait être lié au bug ici:
https://code.google.com/p/chromium/issues/detail?id=324102
Comme une solution de contournement, j'ai trouvé que le réglage de l'iframe src à partir de javascript AVEC l'ajout d'un hasard requête de paramètre à l'URL semble faire l'affaire. Simplement faire l'un ou l'autre ne fonctionne pas.
Exemple:
Math.round(Math.random() * 10000000)
= Génial!Ou vous pouvez simplement utiliser le timestamp:
'http://localhost:6001/?rand='+ (+ new Date())
vous pouvez aller ?rand=' + new Date()/1
OriginalL'auteur Danny