Oggi parliamo di un argomento molto discusso in ambito Flash, ovvero come ottenere filmati Flash sempre aggiornati da modifiche.
Una delle cose che i clienti richiedono e quello di fare modifiche e che queste devono essere subito visualizzabili
Sappiamo tutti che quando facciamo delle modifiche su file flash, e ricarichiamo l’oggetto in remoto con lo stesso nome, se la cache non è aggiornata non vedremo nessun tipo di differenza
Ora vedremo come forzare il download del filmato swf ad ogni modifica effettuata, facendo credere al browser che sia un file diverso, questo ci permetterà di avere sempre filmati flash aggiornati.
Per fare questa operazione dovremo servirci di un linguaggio lato server, vediamo due esempi utilizzando PHP e ASP.
- Codice PHP
Inseriamo il codice all’inizio della nostra pagina .php subito dopo il tag <body>
<?
$swf="filmato.swf"; //il nome del filmato
$ultimamod=date("YmdHis",filemtime($swf)); //preleva la data dell'ultima modifica al file
$swf.="?".$ultimamod; //concatena la data con il nome del file
?>
In seguito all’interno del tag OBJECT:
<param name="movie" value="<? echo $swf; ?>">
e infine nel tag EMBED
src="<? echo $swf; ?>"
Ovviamente se usiamo modi diversi di pubblicazione del filmato swf ricordiamo di inserire le righe di codice per stampare la variabile $swf
- Codice ASP
Inseriamo il codice sempre dopo il tag <body>
<%
'### nome del file SWF
file = "filmato.swf"
'### creazione oggetti necessari per leggere le proprietà del file
Set objFS = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile(Server.MapPath(file))
'### aggiunta della data di ultima modifica al nome del file
'### per sicurezza vengono sostituiti gli spazi con il trattino
file = file & "?" & Replace(objFile.DateLastModified, " ", "-")
'### chiusura degli oggetti precedentemente creati
Set objFile = Nothing
Set objFS = Nothing
%>
In seguito all’interno del tag OBJECT:
<param name="movie" value="<% =file %>">
e infine nel tag EMBED
src="<% =file %>"
Ricordiamo come prima di inserire le righe di codice per stampare la variabile $swf se usiamo modi differenti di pubblicazione
Utilizzando questo metodo verrà caricato aggiornato il filmato swf solo ed esclusivamente effettuata una modifica e non sempre.
18 Commenti
Praticamente la stessa tecnica per prevenire la memorizzazione in cache delle risposte ajax in alcuni casi!
Molti attribuiscono “limiti” a Flash che in realtà limiti non sono. Questo è uno di quelli.
Un altro è il fatto che nei siti full-flash non si possono raggiungere singole pagine direttamente dalla url..niente di più sbagliato!
Con l’uso delle FlashVars si può tranquillamente inviare delle variabili a flash che una volta lette (per esempio l’id o il titolo di una pagina) può tranquillamente e automaticamente effettuare il loadMovie di un SWF e quindi di una pagina del sito full-flash.
In realtà molti dei “limiti” di flash non esistono e sono solo leggende..chi è appassionato di Flash come me e Julius deve illustrarlo chiaramente.
@DnaX esatto ;)
@EmaWebDesign ;)
In genere chi dice che Flash è limitato non lo conosce a fondo. Anche io che mi sono imbattuto ad usare Flash per piccoli clip ho trovato molte caratteristiche che altri ignoravano. Con l’ActionScript è possibile fare molte cose fatte lato server.
Ecco magari permane il problema dell’indicizzazione e della pesantezza di un filmato flash abbastanza complesso. Anche se molti effetti sono meno pesanti se fatti in flash che non in javascript (feci un intero articolo su questo aspetto).
Ciao julius, volevo capire se avendo un sito full flash con dentro caricato un swf esterno che a sua volta prende informazioni dal file xml se con il codice sopra riportato (PHP) funziona nell’aggiornare sempre il filexml…
Ps. se nn funziona il codice, quale metodo per aggiornare l’xml dalla cache?
@Serdominik leggi qui
Scusa, ma se inserisco il codice php nella pagina html in cui carico il filmato flash, ottengo lo stesso effetto?
Grazie per l’aiuto,
Giulio.
Ciao Giulio
ti ricordo che se inserisci un codice php la pagina non sarà più con estensione .htm ma bensì .php
@Julius:
Ciao caro Julius
una domandona da vero dummy: scrivo in html, no php, sarebbe sufficiente aggiungere nell’html il codice php da te suggerito e cambiare l’estensione della pagina da html a php?
O bisogna integrare, modificare, la struttura html dell’intero sito html in Php, aggiungendo “componentistica” php???
Grazie infinite :)
ciao Julius
Prima di chiudere
@Bruno ciao se in una pagina vi è un codice php deve inevitabilmente essere in estensione .php
ciao nurbs, non riesco a compimpilare il file php. c’è sempre qualcosa che non funziona.
protresti fare un file gia in php da modificare.
grazie e ciao
Ciao Julis! Mi complimento con te per questo tutorial, sei sempre il migliore ;).
Però ho un problema.
Sto realizzando un sito tutto in flash e il mio problema è questo: come posso adattare il mio contenuto flash a diverse risoluzioni e contemporaneamente tenerlo sempre aggiornato a l’ultimo file sfw modificato?
Ho fatto delle prove ma non ho ottenuto il risultato sperato.
Ti ringrazio anticipatamente per una tua eventuale risposta
Cordiali saluti
Lapo
Per swf aggiornati intendi che prelevano informazioni da file esterni?
Si, praticamente io ho un sito realizzato tutto in flash, che preleva immagini e testi da esterno e voglio che tutto il mio sito si adatti alla dimensione del browser, ma che contemporaneamente rimanga aggiornato a l’ultimo file swf modificato.
E possibile?
@Lapo sono due cose differenti
La prima, ovvero il sito flash a tutte le risuluzioni trovi qui un esempio
mentre per l’aggiornamento a seconda del fil esterno che richiami, ad esempio XML ti ricordo che per ingannare la cache del browser è possibile richiamare il file xml associando a lui parametri randomici sempre diversi come descritto nell’articolo
Mettiamo il caso che io richiamo dati.xml da flash, una volta richiamato la cache me lo “frizza” e non c’è più nulla da fare.
Un metodo per ingannare la cache è quello di associare dei parametri che non influiranno al contenuto del file ma la cache li riconoscerà come file sempre diversi caricandoli ogni volta.
esempio
parametro = Math.round(Math.random()*9000)
quando poi richiamo il file esternno XML
dati.xml?id=parametro
In questo modo ogni volta che richiamiamo il nostro file xml verrà richiamato con numeri diversi come dati.xml?id=3423 o dati.xml?id=5534 ingannando la cache
Okei va bene, l’esempio di addattare il mio filmato flash a tutte le dimensioni, funziona, nessun problema.
Mentre l’aggiornamento per i file esterni (XLM) va bene..l’ho capito.
Quello che non capisco è, se io ho un filmato flash e metto questi paramentri nella mia pagina php
<param name="movie" value="”>
src=””
In modo che si aggiorni sempre a l’ultimo file modificato…come mai non mi funziona la possibilità di riadattarsi alla dimensione dello schermo?
Cioè se io immeto questi paramentri
<embed src="” >
e dò la destinazione di dove è collocato il mio file sfw e lo provo sul browser, tutto il sito mi viene messo a l’interno di un quadato.
Invece se dò questi altri parametri
<embed src="” width=”1600″ height=”1200″>
Mi viene il sito nella dimensione che voglio…ma se provo a ridimensionare la finestra del mio browser il contenuto non cambia.
Che posso fare? Non è che puoi postare un esempio?
Grazie
Lapo
salve ragazzi…io ho fatto un sito in flash…e ho appunto questo problema..quando aggiorno le foto non le visualizza subito..per farle vedere dovrei cancellare la cronologia..ora non ho capito dove inserire il codice php…devo creare una pagina nuova solo con questo linguaggio e dove va messo? o devo inserirlo in una pagina già esistente? se è si quale? non sono molto pratico con i linguaggi..vi prego aiutatemi.