Evitare il caching delle immagini con PHP
martedì 16 settembre 2008In questo web fatto di AJAX, JavaScript, Rich Internet Applications (aggiungere paroloni a piacere) spesso può essere utile evitare (nonostante le impostazioni scelte dall'utente) che i contenuti scaricati dal nostro server vengano messi nella cache del browser.
Dopo questa pletora di parentesi (ho mai detto che adoro le parentesi) arriviamo al sodo della questione.
Esistono header da inviare attraverso la funzione header() di PHP che in teoria dovrebbero impedire il caching delle nostre pagine:
// Data passata header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-cache"); header("Pragma: no-cache");
Personalmente li uso spesso (con qualche accorgimento per Internet Explorer), ma per le immagini c'è poco da fare: vengono messe in cache comunque.
Come risolvere una volta per tutte la questione caching anche per le immagini? Il trucco c'è ed è talmente banale che quando lo si scopre vien voglia di esclamare: "Perché non ci ho pensato prima?"
Vediamo come fare, basta una riga di codice.
echo '<img src="{$tuaImmagine}?' , time() , '" />';
Cosa abbiamo fatto? Abbiamo semplicemente aggiunto una querystring alla nostra immagine, assegnandogli il valore di time() (che restituisce il numero di secondi passati dal 1 Gennaio 1970).
Così facendo "inganniamo" il browser facendogli credere che serva dover elaborare una richiesta prima di poter accedere alla risorsa, forzandolo quindi a richiedere nuovamente la nostra immagine al server.
La cosa è semplice, funziona e può essere applicata a qualunque elemento: CSS, files da scaricare, contenuto flash...
Facile no?
In alternativa puoi abbonarti alla newsletter, riceverai un'email ogni volta che verrà pubblicato un nuovo post. Il tuo indirizzo email sarà gestito da Feedburner.


















(2 voti, media: 3,50)
16 settembre 2008 alle 09:00
Fiiico, pensa che dalla disperazione sono costretto a cambiare il nome delle immagini. Respect!
16 settembre 2008 alle 10:16
Questo post mi ha fatto venire in mente un’altra soluzione che ho utilizzato di recente.
Evitare il caching con .htaccess
16 settembre 2008 alle 10:29
Grazie per il link, me lo segno!
16 settembre 2008 alle 12:42
Questo è il bello del mestiere del programmatore: tutto è facile e tutto è difficile
16 settembre 2008 alle 14:45
Semplice e geniale, non ci avevo mai pensato. Grazie della dritta
16 settembre 2008 alle 16:50
La stessa tecnica consigliata da molti per evitare il caching delle risposte ajax. Però potrebbero fare qualcosa ai browser per evitare l’uso di questi workaround!