startx25
Jun 28 2007, 12:21 PM
Bonjour à tous.
J'ai un soucis avec le cache du navigateur.
Sous php je faisais ceci dans la balise object :
<?
echo '<param name="movie" value="fichier.swf?var='.time().'">';
?>
et je pouvais finter le cache du navigateur pour forcer à recharger mon fichier swf en cas d'actualisation de la page.
Est-ce possible de faire pareil sous flex ?
Merci de vos conseils
Fusion
Jun 28 2007, 12:25 PM
Essaie de faire un :
CODE
navigateToURL("monswf.swf",'_self');
Ca va naviguer vers ton swf sans changer de page, comme un Refresh en fait
startx25
Jun 28 2007, 12:41 PM
Merci pour ta réponse
Mais je ne peux faire ce que tu me propose,
En faite je suis dans des Accordeons,
et dans dedans il y'a trois swfLoader vers trois fichiers swf.
Et je voudrais que lorssque je mets à jour les fichiers sur le serveur web, les clients récupére la nouvelle version
Or pour le moment il ont toujour l'ancienne
+A
Fusion
Jun 28 2007, 12:46 PM
Tu ne peux pas faire trois removeChild suivis de trois addChild en douce

?
startx25
Jun 28 2007, 01:06 PM
euh ? comprends pas ?
mais ne pourrais-je pas construire le nom du fichier avec une variable ?
un peu comme ça :
sous flex créer une varibale dynamique ?
file = "fichier.swf"
dyna = "?var="+time();
<mx:SWFLoader source=file+dyna width="100" height="100" />
Tonic
Jun 28 2007, 01:13 PM
Si si tu peux créer un nom de variable dynamique, qui sur changement de valeur, chargera le swf que tu veux.
Un exemple :
CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
[Bindable]
private var swfACharger : String;
private function init():void
{
swfACharger="test2.swf";
}
]]>
</mx:Script>
<mx:Button label="Charge" click="init()"/>
<mx:SWFLoader id="img" source="{swfACharger}" complete="init()"/>
</mx:Application>
Fusion
Jun 28 2007, 01:14 PM
CODE
<?xml version="1.0"?>
<!-- Simple example to demonstrate the Accordion layout container. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Panel title="Accordion Container Example" height="90%" width="90%"
paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">
<mx:Label width="100%" color="blue"
text="Select an Accordion navigator button to change the panel."/>
<mx:Accordion id="accordion" width="100%" height="100%">
<!-- Define each panel using a VBox container. -->
<mx:VBox label="Accordion Button for Panel 1">
<mx:SWFLoader source="201.swf"/>
</mx:VBox>
<mx:VBox label="Accordion Button for Panel 2">
<mx:SWFLoader source="2080.swf"/>
</mx:VBox>
<mx:VBox label="Accordion Button for Panel 3">
<mx:SWFLoader source="MvB.swf"/>
</mx:VBox>
</mx:Accordion>
<mx:Label width="100%" color="blue"
text="Programmatically select the panel using a Button control."/>
<mx:HBox>
<mx:Button label="Select Panel 1" click="accordion.selectedIndex=0;"/>
<mx:Button label="Select Panel 2" click="accordion.selectedIndex=1;"/>
<mx:Button label="Select Panel 3" click="accordion.selectedIndex=2;"/>
</mx:HBox>
</mx:Panel>
</mx:Application>
Là, lorsque je fais un Refresh, les SWFs sont actualisés comme il faut. Est-ce que tu cherches à faire autre chose? Du genre, changer les SWFs sans être obligé de faire un Refresh?
startx25
Jun 28 2007, 01:33 PM
Merci fusion, mais dans ton code, les trois swf sont chargé chez le client.
Mais moi je voudrais pouvoir mettre à jour les trois swf sur le serveur web et lors de refresh du navigateur, le client prends la nouvelle version des trois swf.
Tonic
Jun 28 2007, 01:38 PM
Normalement, si tu mets à jours les swf, et que tu les recharges avec une adresse dynamique (via ton url modifiée avec time(), ca doit recharger le swf corectement.
Tu as regardé l'exemple que je t'aie donnée avec la propriété bindable.
startx25
Jun 28 2007, 01:53 PM
".....et que tu les recharges avec une adresse dynamique (via ton url modifiée avec time(),....."
Justement, ce n'est pas via l'url qu'est charger le swf
Les swf sont charger depuis l'interface de flex (eclipse)
et je voudrais que ces swf soit mis à jour automatiquement.
en évitant un bouton supplémentaire, mais uniquement en actualisant la page.
Merci pour votre aide
Tonic
Jun 28 2007, 01:58 PM
CITATION(startx25 @ Jun 28 2007, 01:53 PM)

Justement, ce n'est pas via l'url qu'est charger le swf
Kesako ??
Tu lui passes bien une source à charger.
Donc concrètement, si tu donnes : "source='unSwf.swf?id=5'"
ou "source='unSwf.swf?id=2'"
Le navigateur ne trouvera pas le fichier dans le cache, et ira rechercher ce swf sur le serveur.
Donc si entre temps tu as modifier ce swf sur ton serveur, et que tu décides de recharger ta page, le swf sera misà jour...
Fusion
Jun 28 2007, 02:07 PM
Son problème n'est pas un problème d'URL.
Pour comprendre, essaie parmi les SWFs à charger dans l'accordéon, d'échanger les noms dans le dossier, movie1.swf devient movie2.swf et inversément.
Et si tu recharges, l'application ne prend pas en compte la permutation. Ce qui veut dire que si tu as modifié ton SWF cela ne sera pas pris en compte par le Flex. C'est ça l'ennui.
J'ai fait des tests, notamment avec la propriété cachePolicy, en la passant à off, mais rien de concluant. Peut-être cacheHeuristic, en la passant à off.
Une idée qui me vient (mais porcasse) :
- charger un SWF bidon, le plus léger possible, et tout de suite après charger à nouveau le SWF. S'il a changé entre-temps, il devrait être chargé et à jour
Je n'ai pas testé...
startx25
Jun 28 2007, 02:08 PM
Absolument
....Donc concrètement, si tu donnes : "source='unSwf.swf?id=5'"
ou "source='unSwf.swf?id=2'"....
mais comment dans le fichier mxml de flex rendre le "5" ou le "2" aléatoire ?
startx25
Jun 28 2007, 02:09 PM
Merci fusion d'avoir compris un problème que j'avais du mal à expliquez
Fusion
Jun 28 2007, 02:10 PM
CITATION(startx25 @ Jun 28 2007, 04:08 PM)

mais comment dans le fichier mxml de flex rendre le "5" ou le "2" aléatoire ?
Passe-lui le temps courant.
CODE
var i:Date = new Date();
Là tu es assuré d'avoir un nombre unique
Tonic
Jun 28 2007, 02:15 PM
CITATION(startx25 @ Jun 28 2007, 02:08 PM)

Absolument
....Donc concrètement, si tu donnes : "source='unSwf.swf?id=5'"
ou "source='unSwf.swf?id=2'"....
mais comment dans le fichier mxml de flex rendre le "5" ou le "2" aléatoire ?
un getTimer().
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez
cliquer ici.