Comment éviter la mise en cache d’un swf / fichier xml en AS3 ?

1 question

Écrit le 20 novembre par Matthieu
Publié dans le(s) sujet(s) ActionScript 3 |Adobe Flash

Mots clés : , , , , , , , , ,

Nous allons découvrir une astuce très simple pour complètement oublier la mise en cache du Flash et du Navigateur Internet (Firefox, Google Chrome, Internet Explorer…).

Introduction

Un problème qui revient souvent avec Flash sous différentes forme :

  • je charge un fichier xml dans Flash et les données affichées ne sont pas à jour!
  • je modifie le swf, la page web m’affiche toujours l’ancienne version du swf, toujours pas de mise à jour!

Et tout cela provient de la mise en cache des données (swf, xml, texte…) par votre Navigateur Web et Flash.

Utilisation d’une variable aléatoire

Désactiver le cache des fichiers xml, eden et textes

Il suffit d’utiliser une variable générée aléatoirement pour charger vos fichiers de configuration (xml, eden, texte).

Dans votre code AS3, ajoutez tout simplement une variable aléatoire lorsque vous chargez un fichier de configuration.

[codesyntax lang= »actionscript3″ title= »URLRequest » bookmarkname= »URLRequest »]

[/codesyntax]

En principe, j’utilise la fonction AS3 Math.random(). Il est possible d’utiliser la fonction Date() ou une autre. L’important est d’appeler votre fichier xml avec une variable aléatoire.

Télécharger le code source complet sur l’article : Création d’un Mini Flex avec les Composants AS3 Facile. C’est un fichier xml qui détermine le contenu affiché par le swf.

Amusez-vous ensuite à modifier le contenu du fichier xml pour mettre à jour les informations affichées par le swf.

Désactiver le cache du swf

Pour afficher un swf dans une page Web tout en désactivant sa mise en cache, j’utilise exactement la même astuce.

C’est à dire, je crée une variable générée aléatoirement avec le chemin de mon swf. Regardez l’exemple ci-dessous (la toute dernière ligne avec echo rand(2,28)) :

[codesyntax lang= »html4strict » title= »SWFObject » bookmarkname= »SWFObject »]

[/codesyntax]

La fonction php rand() crée une variable aléatoire. Le navigateur croit que c’est un nouveau fichier swf, donc il le charge à chaque fois!

Consultez cet article: Comment utiliser SWFObject pour afficher du contenu flash ? . SWFObject présente l’avantage d’optimiser l’affichage des swf pour les moteurs de recherche (Google, Yahoo…).

Et vous, quelle solution utilisez-vous pour empêcher la mise en cache de Flash et du Navigateur Internet ?

Est ce que vous utilisez les header() en php, ou avez-vous une autre astuce ?

Je suis curieux de découvrir vos techniques de gestion du cache en ActionScript / Flash.