2012-11-13 41 views
10

我正在用MVC4和C#製作一個Web應用程序。如何在不碰F5的情況下過期緩存的圖像?

我允許用戶上傳圖片作爲他們的個人資料圖片。此時,我需要先前的配置文件圖片過期,以便在瀏覽器重新加載頁面時顯示新圖像。目前,由於兩個圖像共享相同的名稱,因此瀏覽器使用先前緩存的圖像而不是新圖像。

如果我強制瀏覽器重新加載F5它顯示新的圖像。如何確保用戶返回其個人資料頁面時看到新圖像,而不是瀏覽器緩存中沒有碰到F5的圖像?

+5

如何更改名稱? +谷歌爲'If-Modified-Since' – zerkms

回答

6

您可以在圖像文件名的末尾添加一個虛擬參數。例如,

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

其中數字是隨機的或時間戳。它將被忽略,但存在將迫使瀏覽器重新加載圖像。

+0

爲什麼不使用'no-cache'呢?隨機參數只是醜陋 – zerkms

+0

如果他想防止圖像重新加載,他不需要每次都添加相同的數字嗎? – neeKo

+3

也許使用文件的更改日期或其內容的散列。 – CodesInChaos

2

將圖像存儲在服務器上時,將隨機文本的一個(靜態)位添加到文件名中,並在圖像更改時重新生成它。這樣,瀏覽器會在圖像相同時緩存圖像,並在圖像發生更改時重新加載圖像,從而在不增加不必要的頁面加載時間的情況下提供所需的行爲。

相關問題