2009-11-11 4 views
0

Je voudrais créer une tâche rake ou quelque chose pour effacer le cache du navigateur. Le problème est, je suis en cours d'exécution d'une application Flash, et si je change les données, j'ai le plus souvent besoin de réinitialiser le cache du navigateur afin qu'il supprime l'ancien swf et peut voir les nouvelles données XML.Réinitialiser par programme le cache du navigateur dans Ruby (ou supprimer l'élément sélectionné du cache du navigateur)?

Comment réinitialiser le cache du navigateur avec ruby? Ou encore plus précisément, comment puis-je supprimer uniquement un élément sélectionné du cache du navigateur?

Merci pour l'aide!

Répondre

2

Je vois quelques solutions possibles:

  1. Ecrire un script shell qui supprime les fichiers temporaires à partir du disque le cache (quel navigateur utilisez-vous?). Je ne suis pas sûr que la suppression des fichiers sur le disque fonctionnera nécessairement si le navigateur les a mis en mémoire cache.
  2. Utilisez l'en-tête HTTP (No-Cache) pour éviter la mise en cache dans le navigateur, Adobe has documentation on No-Cache. Vous pouvez définir cet en-tête uniquement en mode développement, de sorte que le fichier swf soit mis en cache lors de la production.
  3. En fonction de votre navigateur, forcer une actualisation de la page et le cache (par exemple Crtl-F5 dans Firefox)
+0

merci! J'utilise safari –

0

Vous ne pouvez pas réinitialiser le cache du navigateur, même si vous parfois il ne sera pas suffisant, car la mise en cache peut se produire non seulement sur le serveur et/ou le client, mais aussi sur un nombre quelconque de nœuds, votre réponse passe de votre serveur à votre client.

Le seul outil à votre disposition est les en-têtes de mise en cache.

Vous pouvez les mettre à NoCache juste garder à l'esprit qu'il frappera le serveur à chaque fois que

1

Je ne sais pas comment vous chargez les données XML, mais dans le passé, je suis devenu autour de la question en ajoutant un nombre aléatoire sur le chemin du fichier xml:

xml.load("data.xml?"+Math.random()); 

Fondamentalement, flash pensera toujours le fichier est une autre URL. Il ne sera pas en mesure de trouver une correspondance dans votre cache. Encore une fois, je ne suis pas sûr de la façon dont vous chargez les données XML, donc je ne suis pas sûr si cela s'applique à votre situation.

J'espère que ça aide, cependant.

+0

malade, c'est gentil. Merci! –

0

Depuis que vous utilisez Safari, here's an article décrivant comment utiliser AppleScript pour effacer le cache. Mais vous pouvez probablement ignorer la partie AppleScript et supprimer les fichiers directement dans la tâche rake. Le seul hic pourrait être que vous devez redémarrer le navigateur pour qu'il prenne effet, mais cela pourrait être fait avec un kill sur le processus et un "open /Applications/Safari.app" (je suppose que vous êtes sur un Mac: dans Windows ce serait comme démarrer "c: \ program files \ Safari ...").

Questions connexes