2012-02-13 63 views
1

您好,處理緩存的圖像?如何讓瀏覽器顯示新版本?

當與圖像(img_01.jpg)的網頁被加載圖像將被瀏覽器高速緩存。假設我們更新img_01.jpg並使用相同的名稱進行保存,當訪問相同頁面時,舊圖像將從緩存中顯示。

我應該如何在ASP.NET MVC中處理這個問題?

我知道在常規ASP.NET(無MVC)中必須創建一個額外的組件,並且此組件將在文件名的末尾添加一個隨機數。我如何在ASP.NET MVC中做到這一點?

BestRegards

回答

0

我決定在圖像文件名中使用主對象版本號,這將確保最終用戶總是看到正確的圖像。

1

您可以使用HTTP handlers for images添加過期頭。但它主要取決於瀏覽器是否正確使用了過期頭文件。它有幫助嗎?

+0

嗯,看着你的鏈接,我確實記得很久以前做了這樣的事情。我所做的就是像這樣在最後添加一個隨機數:myimage.jpg?id = [random],這確保圖像每次都從服務器加載。然而,我從來沒有需要改變IIS上的任何東西,因爲這篇文章摘要。問題是如果這真的更好,那麼在實際文件名的末尾添加一個隨機字符串?這最後一個解決方案意味着我們只有在獲得新的隨機數(更新)時才下載新圖像。 – Banshee 2012-02-13 20:36:32

+0

添加一個隨機字符串使圖像成爲與瀏覽器角度不同的資源。如果你可以生活在這樣的圖像名稱(myimage.jpg?id = 474484)。在某些情況下,它可能不好。因此,您可以處理瀏覽器對圖像的請求,並向響應添加過期標題(日期設置爲過去)。它會告訴瀏覽器該資源已經過期,並且下次它將從Web服務器再次請求它。 – 2012-02-13 20:45:11

1

在C#中,當你綁定Image控件時,只需將url作爲查詢字符串。 例如: -

string _urlPhoto = "UploadPhoto" + "/" + Imagename + "?" + Guid.NewGuid().ToString(); 

瀏覽器會一直把它看作新的請求,並不會從緩存中取圖像。