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.

Comme vous contrôlez les serveurs, avez-vous essayé d'inclure tous les possibles de la directive pour désactiver la mise en cache dans les en-têtes de réponse?
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