Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    Evitare la registrazione in cache di un'immagine

    Ho una pagina su cui carico 1 volta alla settimana un file immagine che viene visualizzato dagli altri clients. Il nome è sempre lo stesso perchè va sovrascritto (non ha senso cambiare il nome o fare progressivi ecc., lo dobbiamo sovrascrivere con lo stesso nome).

    Il problema è che i clients, dopo che ho caricato quello nuovo, visualizzano sempre quello vecchio. Il problema è sicuramente che il browser ha salvato in cache l'immagine e ricarica quella.
    Unica soluzione è quella di premere un F5 per fare un refresh della pagina.

    Dato che vorrei evitare il salvataggio di questi dati in cache sui cliens ho aggiunto a tutte le pagine:

    Codice PHP:
    // Evita la registrazione in cache
    header('Cache-Control: no-cache');
    header('Pragma: no-cache'); 
    che però non sortisce alcun effetto. Anche con questo comando ad inizio pagina l'immagine salvata resta la stessa.

    Come posso fare per evitare il salvataggio in cache? Ovviamente non ditemi di andare nelle opzioni dei clients e modificare il salvataggio della cache... ;-)

    grazie
    ciao

  2. #2
    Aggiungendo al path dell'immagine una query string random, forzi la cache senza strani effetti:

    codice:
    [img]path/of/image.jpg?v=1.1[/img]
    oppure ancora con un .htaccess se sei su apache

    codice:
    <FilesMatch "\.(jpg|jpeg|gif|png)$">
    Header set Cache-Control "max-age=1, private, proxy-revalidate"
    </FilesMatch>
    In questo modo forzi la cache di TUTTE le immagini presenti nella cartella (e tutte le sottocartelle) di quella contenente l'htaccess.

    Oppure ancora crei un file php
    Codice PHP:
    //myimage.php
    header("Pragma: no-cache");
    header("cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    header('Content-type: image/jpeg');
    echo 
    file_get_contents("pat/of/image/on/server/image.jpg"); 
    che richiami come se fosse una immagine

    codice:
    [img]path/of/myimage.php[/img]
    o ancora elimini gli header della cache e sfrutti il metodo 1 anche per questo
    codice:
    [img]path/of/myimage.php?v=1[/img]

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ho trovato anche questo ma non sembra sortire alcune effetto...

    Codice PHP:
    session_start();
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Data passata
    header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); // sempre modificato
    header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
    header("Cache-Control: post-check=0, pre-check=0"false);
    header("Pragma: no-cache"); // HTTP/1.0 

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    up

  5. #5
    premetto di non aver letto le risposte (molto lunghe...) ma solo il titolo.
    Io farei così:
    Codice PHP:
    "[img]nomefile.estensione?".filemtime(percorsosulserver)."[/img]" 
    Bye.
    Promuovi il tuo business su PartnerTip

    Condividi informazioni sulle città del mondo su KooKooZa!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    La funzione da te indicata riporta l'ultima modifica fatta a quel file. Non capisco come intendi utilizzarla. Puoi spiegarti meglio?

  7. #7
    Originariamente inviato da aasmdaa
    La funzione da te indicata riporta l'ultima modifica fatta a quel file. Non capisco come intendi utilizzarla. Puoi spiegarti meglio?
    Si tratta della stessa tecnica che ti è stata indicata da chumkiu, solo che qui viene dato come parametro la data del file.
    In questo modo se il client non ha mai caricato l'immagine della settimana, questa viene caricata.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Scusate non avevo letto la risposta di Chumkiu...mai iniziare il lavoro prima di avere bevuto il caffè!

    Comunque questa mi sembra la soluzione più veloce e logica oltre a quella della modifica sul .htaccess quando possibile.

    Appena ho tempo provo e vi faccio sapere.

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.