ASP.Net IIS Browser Image Cache Issue — 在ASP.Net 中解決Cache 了的圖片不能更新使用新的圖片問題

最近都是忙公司的網站…
為了提升使用者體驗
我們嘗試使用IIS 中的Caching,
希望使用者不同每次都需要Download 這網站的圖或CSS 檔…
這可以令瀏覽速度加快

之後我們也建立了一些Virtual Directory用來儲存一些每天都會更新的圖片… 其實是從Google Chartdownload 來的..因為公司的網站用了SSL …所以每當有需要連線到其他的domain website 時 在IE上總會出現一些令人煩惱的信息…
所以最後選擇了每天Download這些圖片…之後再用ASP.Net 來連接這想在Virtual Directory 上的圖…

誰不知… 這些圖片不懂得自動更新…即使檔案的修改日期已經更新了..但是在客戶端都只是看到之前的圖…
最後發現…原來這個Virtual Directory是繼承了這個Web ApplicationCache [content expiration] settings

解決方法很想十分簡單…
只要在這個”Virtual Directory/虛擬目錄” 上選擇”Properies/內容
之後選”HTTP Header’ 分頁
之後選”Enable content expiration”  ->選”Expire immediately“便可…

很可惜用戶已經瀏覽過公司的網站…
所以他們的瀏覽器上有了這個 Cache Expiration 設定…
瀏覽器只會在Cache 過期後才會再次Load 這個檔案的…
用戶可以按”CTRL” + “F5” 去解決這個問題…
但是如果需要找每一個用戶去做這個動作..給別人的感覺很不專業…

最後我們找到了解決的方法..
便是我們在圖片的URL 上加了一個用timestamp 做成的Query string
E.G.  http://i1255.photobucket.com/albums/hh631/sharechiwai/temporary-1.jpg?20101118000000

由於這個圖片的URL不同了..所以瀏覽器便會感到這是一個新的圖片檔案名…
便不會從Cache中 load 這個圖片出來了 =)

Hope you find it useful

Leave a Reply