Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    cancellare file xml precaricato dal browser

    Ho un filmato flash che legge i dati di un xml. Il problema è che se la pagina è stata visitata prima dei nuovi aggiornamenti il filmato continua a leggere l'xml vecchio non aggiornato.
    Credo che il motivo sia dovuto al fatto che il browser salva provvisoriamente l'xml da qualche parte sul computer del visitatore.
    Mi chiedevo se esiste con php (che per me è più facile da gestire che actionscript) un modo per cancellare tutti i dati di navigazione relativi alla pagina dove il codice è inserito, io lo inserirei prima dell'inclusione dell'swf e risolverei il problema.

  2. #2
    è evidentemente un problema di cache locale del browser, però a meno che il file xml non sia generato come stream di uno script php, php in tutto questo non centra un tubo (non è che php entra nel pc dell'utente e cancella di volta in volta i files).

    se invece il file viene prelevato direttamente dal webserver devi controllare quali sono le indicazioni nella configurazione del server per gli expire headers.

  3. #3
    Il file xml non è dinamico ma statico, non viene generato da php e nemmeno aggiornato con php ma è aggiornato manualmente. Quello che pensavo di fare era proprio quello che tu mi dici che php non può fare. Per quanto riguarda la configurazione del server non credo di averne accesso (a parte poi il fatto che dovrei documentarmi un po') a meno che php non mi permetta almeno di apportare modifiche temporanee alla configurazione del server.

  4. #4
    Originariamente inviato da giancarlo75
    Il file xml non è dinamico ma statico, non viene generato da php e nemmeno aggiornato con php ma è aggiornato manualmente. Quello che pensavo di fare era proprio quello che tu mi dici che php non può fare. Per quanto riguarda la configurazione del server non credo di averne accesso (a parte poi il fatto che dovrei documentarmi un po') a meno che php non mi permetta almeno di apportare modifiche temporanee alla configurazione del server.

    se non hai accesso alla configurazione del server e non puoi nemmeno usare ad esempio un file .htaccess, quello che puoi fare con php è fare da "wrapper":

    il tuo script php dovrà andare a leggere il contenuto del file xml e riportarlo paro paro al client, semplicemente aggiungendo gli headers necessari per evitare che il risultato sia salvato in cache

    Codice PHP:
    header("Content-type: text/xml");
    header("ETag: PUB" time());
    header("Last-Modified: " gmdate("D, d M Y H:i:s"time()-3600) . " GMT");
    header("Expires: " gmdate("D, d M Y H:i:s"time()-3600) . " GMT");
    header("Cache-Control: max-age=0, s-maxage=0, no-cache, must-revalidate");
    header('Cache-Control: no-store, no-cache, must-revalidate',FALSE); 
    header('Cache-Control: post-check=0, pre-check=0'FALSE);
    header("Pragma: no-cache");

    print 
    file_get_contents('/path/per/file.xml'); 
    oppure puoi forzare la cosa anche direttamente lato client se il tuo filmato flash mette uno url avente la data odierna come parametro get che sarebbe ignorato dal server ma che ti permette di evitare la cache

    ovverosia potresti far richiamare http://www.tuosito.it/file.xml?date=2011-11-02_10:31:50

  5. #5
    Ti ringrazio per i suggerimenti che a dir la verità riesco solo in parte a capire ma per mia incompetenza ed assolutamente non perchè ti spieghi male.
    Da quanto capisco la prima soluzione andrebbe sicuramente bene se la mia necessità fosse quella di aprire l'xml con php, ma l'xml deve leggerlo l'swf; ora resta da vedere se mettendo solo le intestazioni in cima alla pagina che include l'swf può funzionare.
    Codice PHP:
    header("Content-type: text/xml");
    header("ETag: PUB" time());
    header("Last-Modified: " gmdate("D, d M Y H:i:s"time()-3600) . " GMT");
    header("Expires: " gmdate("D, d M Y H:i:s"time()-3600) . " GMT");
    header("Cache-Control: max-age=0, s-maxage=0, no-cache, must-revalidate");
    header('Cache-Control: no-store, no-cache, must-revalidate',FALSE); 
    header('Cache-Control: post-check=0, pre-check=0'FALSE);
    header("Pragma: no-cache"); 
    La seconda soluzione la vedo ancora più difficile perchè dovrei intervenire sul sorgente dell'swf che non è molto semplice dato che si tratta di un plugin mp3 che ho trovato ed ho inserito paro paro nel sito.

    Proverò la prima soluzione e nel caso non funzionasse metto un avviso che avverte di cancellare la cache per vedere gli aggiornamenti, che è la cosa più facile.
    Grazie, non ti chiedo di approfondire anche perchè sono impreparato, hai fatto fin troppo

  6. #6
    Originariamente inviato da giancarlo75
    Ti ringrazio per i suggerimenti che a dir la verità riesco solo in parte a capire ma per mia incompetenza ed assolutamente non perchè ti spieghi male.
    Da quanto capisco la prima soluzione andrebbe sicuramente bene se la mia necessità fosse quella di aprire l'xml con php, ma l'xml deve leggerlo l'swf; ora resta da vedere se mettendo solo le intestazioni in cima alla pagina che include l'swf può funzionare.
    Codice PHP:
    header("Content-type: text/xml");
    header("ETag: PUB" time());
    header("Last-Modified: " gmdate("D, d M Y H:i:s"time()-3600) . " GMT");
    header("Expires: " gmdate("D, d M Y H:i:s"time()-3600) . " GMT");
    header("Cache-Control: max-age=0, s-maxage=0, no-cache, must-revalidate");
    header('Cache-Control: no-store, no-cache, must-revalidate',FALSE); 
    header('Cache-Control: post-check=0, pre-check=0'FALSE);
    header("Pragma: no-cache"); 
    La seconda soluzione la vedo ancora più difficile perchè dovrei intervenire sul sorgente dell'swf che non è molto semplice dato che si tratta di un plugin mp3 che ho trovato ed ho inserito paro paro nel sito.

    Proverò la prima soluzione e nel caso non funzionasse metto un avviso che avverte di cancellare la cache per vedere gli aggiornamenti, che è la cosa più facile.
    Grazie, non ti chiedo di approfondire anche perchè sono impreparato, hai fatto fin troppo

    il swf invece di richiamare direttamente il file xml richiama il file php che a sua volta richiama il file xml e lo passa allo swf

    ora come ora hai

    swf <-> xml

    con il mio suggerimento avresti

    swf <-> php <-> xml

    quel codice php non lo devi mettere nella pagina che richiama il swf ma nella pagina che ti andrà a leggere il file xml e lo passerà allo swf (il man in the middle, insomma)

  7. #7
    Ah ok, ci stavo arrivando...
    Vorrà dire che devo mettere mano alle classi actionscript e ripubblicare il filmato, un un compito un po' arduo ma non impossibile e poi forse funziona.

  8. #8
    Ho provato, solo che se sostituisco file.xml con file.php che legge il file.xml l'swf non lo riconosce. Ora cerco qualche soluzione per questo problema.

  9. #9
    Originariamente inviato da giancarlo75
    Ho provato, solo che se sostituisco file.xml con file.php che legge il file.xml l'swf non lo riconosce. Ora cerco qualche soluzione per questo problema.
    questa riga

    header("Content-type: text/xml");

    potrebbe essere importante, la metti?

    altra cosa, se provi ad aprire il link direttamente dal browser, cosa ti dice?

  10. #10
    La riga la metto, metto tutto il codice che mi hai postato.
    Se provo ad aprire la pagina con il browser me lo riconosce come documento xml e mi mostra tutto il listato. Sembrerebbe tutto corretto, se però provo a salvare la pagina il browser gli da il nome file.php.xml, sarà per quello?
    Io nella classe actionscript ho semplicemente cambiato il percorso: "xml/file.xml" con "xml/file.php"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.