1 votes

Lorsqu'un swf (ou une autre ressource externe distante) est chargé à l'aide de SWFLoader, une mise en cache côté client est-elle effectuée ?

J'aimerais savoir si, lorsqu'une ressource externe distante (disons SWF ou JPG) est chargée à l'aide du SWFLoader (ou même du composant Image) dans flex3, il y a une mise en cache côté client (c'est-à-dire côté navigateur) des ressources chargées. En particulier, est-ce qu'une deuxième demande pour accéder à une ressource précédemment accédée utiliserait simplement la ressource mise en cache ou est-ce qu'une nouvelle demande serait faite. Ce serait bien de savoir si les deux sont possibles (c'est-à-dire lui dire de toujours utiliser un nouveau chargement ou d'utiliser une copie en cache si elle est disponible).

3voto

Adam Harte Points 6449

Le navigateur est responsable de la mise en cache de tous les médias chargés en externe, tels que les images, les sons, les vidéos et même les SWF. Ceux-ci peuvent être supprimés en vidant le cache de votre navigateur. Je recommande le Bouton "Effacer le cache" (Clear Cache) Add-on Firefox pour tous ceux qui testent leurs projets Flash dans Firefox.

Cependant, Flash Player gère la mise en cache de tout chargement externe. signé Composants Flash, par exemple tout composant du cadre Adobe Flex. Vous pouvez en savoir plus sur Le cache des lecteurs Flash ici . L'effacement de la mémoire cache de votre navigateur n'effacera pas ces composants.

Pour empêcher la mise en cache d'un fichier par votre navigateur, vous devez vous assurer que son nom de fichier est unique à chaque fois qu'il est chargé. Pour ce faire, ajoutez une chaîne aléatoire comme variable d'URL. J'utilise généralement l'heure actuelle ou un nombre aléatoire :

var noCache:int = new Date().getTime();
myImage.load("filename.jpg?uniq=" + noCache);

Ou vous pouvez ajouter la variable unique en utilisant l'option URLVariables classe.

0voto

ktulur Points 657

S'il s'agit d'une mise en cache, vous pouvez éviter de charger la ressource avec une variable aléatoire, par exemple en chargeant l'uri "/background.swf?var=1432".

0voto

ozke Points 843

Vous devez vider le cache de votre navigateur. De cette façon, une fois que tout fonctionne bien, la mise en cache fonctionnera toujours. Cela signifie que si je visite 5 fois le même site web, je ne le chargerai qu'une seule fois (c'est vraiment pratique).

La solution suggérée par ktulur fonctionne mais n'oubliez pas de la commenter/supprimer lorsque vous avez terminé.

Vous pourriez faire quelque chose comme :

var anticache:String="";
anticache = String(Math.random());
var file_url:String = "Whatever.xxx"+anticache;

Et ensuite commenter/décommenter la deuxième ligne pour utiliser/ignorer la méthode anticache. J'espère que cela vous aidera :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X