le lab

Flash, attention au cache

les fichiers flash sont une plaie pour le poids des pages, mais ça vous le saviez déjà. Ils sont lourds, difficilement modifiables, jamais remplaçables. Mais ils plaisent au marketing et aident à vendre plein de mobiles, de lecteurs mp3, des portefeuilles ou des montres sur mesure où vous gravez votre nom. Difficile de les refuser...

Le plus génant est qu'ils sont faits par des gens qui n'ont aucune considération pour le cache, et je sais de quoi je parle (vous voulez voir toutes mes réalisations en Flash?). Notamment, une méthode très utilisée pour passer des paramètres à un flash est de mettre comme url de source le nom de fichier suivi d'un point d'interrogation puis tous les paramètres. Attention danger! Ce n'est pas cachable.

C'est même à l'origine le meilleur moyen utilisé par les développeurs pour être surs de charger le flash ou une autre ressource sans cache : forcer un paramètre variant à chaque requête. Quelque chose comme compteur.swf?now=2543985.

Vous pouvez mettre une directive de cache sur le fichier swf, cela ne changera malheureusement pas le comportement du navigateur au premier chargement : il téléchargera le fichier flash plusieurs fois comme s'il était différent à chaque fois.

Il existe une solution pourtant bien documentée qui permet d'éviter ce comportement et de pousser le flash dans le cache. Quand vous passez du stade développement au stade recette ou production, pensez à utiliser les flashvars. C'est l'autre moyen de passer des paramètres au lecteur Flash, sans utiliser l'url. C'est tellement bien documenté que des objets comme swfobject, la librairie la plus utilisée pour intégrer les flash a des méthodes pour faire ce passage de paramètres.

Maintenant, si vous utilisez un énorme fichier ou que vous avez besoin d'informations toujours garanties fraiches, vous devrez utiliser d'autres méthodes pour améliorer le temps de chargement. Je vous conseille le résau de distribution de contenu.

Commentaires

1. Cyrillundi 12 novembre 2007 à 23:02

Je viens d'obtenir un bon résultat avec ces modifications : 500 Ko sur une page. Pourquoi ne le feriez vous pas?

2. Olivierlundi 10 décembre 2007 à 16:09

Bonjour,

Pourrais-tu expliquer en quoi "swfobject" permet de spécifier au navigateur de ne pas utiliser le cache pour afficher un SWF en utilisant des variables, du style so.addVariable(....) ?

Merci d'avance.

3. cyrildimanche 27 avril 2008 à 13:05

Désolé, je réponds hyper tard : les commentaires sont sur-spammés, et les vrais commentaires ne sont plus visibles.
Pour répondre à la question d'Olivier, la manière dont swf Object écrit l'intégration des flash dans la page HTML permet de séparer l'url du fichier swf (http://www.toto.com/flash/monflash.swf) du passage de paramètre (variable1=1&variable2=4567, variable1=2&variable2=123). Donc le navigateur considère qu'il télécharge toujours la même ressource (http://www.toto.com/flash/monflash.swf) et lui applique les variables, au lieu de considérer qu'il télécharge des ressources différentes (http://www.toto.com/flash/monflash.swf?variable1=1&variable2=4567, http://www.toto.com/flash/monflash.swf?variable1=2&variable2=123).

Trackbacks

Aucun trackback.

Les trackbacks pour ce billet sont fermés.

Ajouter un commentaire

Le code HTML dans le commentaire sera affiché comme du texte, les adresses internet seront converties automatiquement.



Identifiez-vous avec OpenID !

Ajouter un commentaire

Le code HTML dans le commentaire sera affiché comme du texte, les adresses internet seront converties automatiquement.