2011-02-10 29 views
6

Dopo aver modificato il nome del dominio in cui è ospitata l'applicazione Flash, è necessario modificare il file crossdomain.xml. Quel crossdomain.xml è ospitato su api-server, che viene utilizzato dall'applicazione flash. Vedo che Flash utilizza crossdomain.xml dalla cache del browser. C'è qualche trucco per rendere flash per non ottenere crossdomain.xml dalla cache? Forse c'è qualche parametro, che posso passare a lampeggiare durante la sua chiamata in object tag?crossdomain.xml impedisce la memorizzazione nella cache

risposta

5

Problema fastidioso - nessun dubbio.

Prima di tutto: mi piace il caching - finché ho il controllo. Questo è il modo in cui ottengo il controllo sulla memorizzazione nella cache crossdomain.xml:

Diciamo che abbiamo un'app flash che richiede l'input da un server diverso. Nel mio caso abbiamo questa configurato come FlashVar dataSrc=http://www.company.com/data/calendar.xml

Così il flash è alla ricerca di www.company.com/crossdomain.xml ... che viene caricato una volta e poi preso dalla cache del browser degli utenti fino a che non svuota manualmente.

La soluzione è nel cambiare il sottodominio del crossdomain.xml ist tratto da:

Assicurarsi, che, per esempio noCache.company.com/ punti a di company.com documentRoot (!). Flashvar viene modificato in dataSrc=http://noCache.company.com/data/calendar.xml. Infatti, stai indirizzando lo stesso file di prima.

Flash sta cercando noCache.company.com/crossdomain.xmlche verrà prelevato dal server ora perché non esiste alcun file memorizzato nella cache per quell'uri.

Spetta a tua fantasia ... se si consente sottodomini come noCache_ {} numeric_value, si potrebbe facilmente gestire il proprio TTL accedendo http://noCache_ {} WEEK_OF_YEAR .company.com/dati/calendar.xml ...

Puoi anche incrementare quel valore numerico ogni volta che crossdomain.xml è cambiato.

+0

Sì, ho risolto il mio problema in modo simile. Stavo ancora aspettando la gestione della soluzione con sole impostazioni flash. Ma sembra che o non ci sia alcuna soluzione usando solo le impostazioni del flash, o nessuno lo sa. Ecco perché accetto questa risposta come soluzione di lavoro. Grazie. – Dao

+0

Grazie! Preferirei (richiedere?) Anche una configurazione flash. Questo è un problema molto comune ... – HBublitz

-3

Vorrei ricaricare (F5 o CTRL/CMD-F5) il file crossdomain.xml direttamente nel browser finché non viene visualizzato. Basta digitare l'URL del file di crossdomain nel browser e continuare a rinfrescare. Inoltre vorrei pulire la cache del browser.

Si dovrebbe provare Firefox e Firebug che mostra se i file scaricati sono memorizzati nella cache o meno.

http://getfirebug.com/

Buona fortuna, Rob

+0

Grazie per la risposta, ma me non è l'unico uomo che vuole vedere sito di lavoro. Ci sono molti altri che vogliono usarlo. Supponiamo che io non possa ricaricare fisicamente direttamente crossdomain.xml usando i loro browser) – Dao

0

aggiungo numeri casuali alla fine del file xml se io non voglio che di cache ad es. var myXMLURL: String = "myXML.xml? r =" + Math.random() * 1000;

Il browser lo vede come un file diverso ad es. myXML.xml? r = 645/myXML.xml? r = 239

Non sono sicuro se questo funzionerebbe con i file crossdomain.xml, ma dovrebbe valere la pena di provare rapidamente.

+3

Come ho capito 'crossdomain.xml' è chiamato dai meccanismi interni di Flash. Se sai come influenzare questa richiesta e aggiungi parametri, per favore condividi. – Dao

+3

Flash richiede un crossdomain.xml alla base del dominio per impostazione predefinita, ma è possibile impostarlo chiamando Security.loadPolicyFile (str: String); http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/system/Security.html#loadPolicyFile() –

+1

@TrevorBoyle: non riesco a ottenere Security.loadPolicyFile() per fare effettivamente qualcosa una volta un vecchio la versione di crossdomain.xml è già stata memorizzata nella cache, c'è qualcosa di ovvio che potrei trascurare? –

1

Utilizza i seguenti direttive di Apache per specificare la politica di caching per il file:

<Directory /var/www/mysite> 
    <FilesMatch "crossdomain.xml"> 
    Header set Cache-Control "max-age=86400, public, must-revalidate" 
    </FilesMatch> 
</Directory> 
Problemi correlati