2012-11-13 14 views
10

Sto creando un'applicazione web con MVC4 e C#.Come faccio a scadere un'immagine memorizzata nella cache senza premere F5?

Sto permettendo all'utente di caricare un'immagine per la loro immagine del profilo. In questo momento, ho bisogno che la precedente immagine del profilo scada, così quando il browser ricarica la pagina viene visualizzata la nuova immagine. Attualmente, poiché entrambe le immagini condividono lo stesso nome, il browser utilizza l'immagine precedente che è stata memorizzata nella cache al posto della nuova immagine.

Se forzo il browser a ricaricare con F5, mostra la nuova immagine. Come faccio a essere sicuro che un utente che torna alla pagina del proprio profilo veda la nuova immagine e non quella nella cache del browser senza colpire F5?

+5

Come cambiare nome? + google per 'If-Modified-Since' – zerkms

risposta

6

È possibile aggiungere un parametro fittizio alla fine del nome file dell'immagine. Ad esempio,

<img src="...\avatar.jpg?d=7615833"> 

dove il numero è casuale o un timestamp. Sarà ignorato, ma la presenza costringerà il browser a ricaricare l'immagine.

+0

Perché non usare' no-cache' allora? Il parametro casuale è solo brutto – zerkms

+0

Non dovrebbe aggiungere lo stesso numero ogni volta se vuole impedire il ricaricamento dell'immagine? – neeKo

+3

Forse usare la data di modifica del file o un hash del suo contenuto. – CodesInChaos

2

Quando si memorizza l'immagine sul server, aggiungere un (statico) bit di testo casuale al nome del file e rigenerarlo quando l'immagine cambia. In questo modo, il browser memorizzerà l'immagine nella cache quando è la stessa e la ricaricherà quando cambia, il che dà il comportamento desiderato senza aggiungere tempo di caricamento della pagina non necessario.

Problemi correlati