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).
Réponses
Trop de publicités?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.
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 :)