[Silverlight] 解決圖片cache 問題

2010/10/13

在論壇上面看到有人問..
我不知道這樣算不算是正解…

但是我用的方法是以前我用的奧步…XD
因為cache無所不在....
所以我用的方法..
簡單的說就是在圖片source 面加上一個亂數..
包括解決IE cache我也是用這方法..
基本上也不會去影響到圖片的讀取…

範例設計:

sshot-53

案下載入圖片的按鈕後..

http://www.in2.cc/sample/01lab.jpg 這張圖載入..


其中按鈕裡面的Code :

private void button1_Click(object sender, RoutedEventArgs e)
{
           var imgSrc = "http://www.in2.cc/sample/01lab.jpg"+"?"+Guid.NewGuid();
           this.image1.Source = (new BitmapImage(new Uri(imgSrc,UriKind.Absolute)));

}

我在圖片位置後面加入 ?附加上產生一組 Guid.NewGuid()
這樣每次讀取的圖片對於Silvrlight就會不同,可以減少cache..
但是其實會對Server 造成多一點點的傳輸頻寬量..

如果檔名一樣,但是卻又常更動的圖片可以用這方式…

實測過了可以解決問題…

補述: 後來有其他前輩(小中中)補充一個方法也很棒,也或許才是正解..

private void button1_Click(object sender, RoutedEventArgs e)
{
    var imgSrc = "http://www.in2.cc/sample/01lab.jpg";
    var uri = new Uri(imgSrc, UriKind.Absolute);

    BitmapImage bi = new BitmapImage(uri);
    //忽略圖片快取
    bi.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
    
    this.image1.Source = (bi);

}

讚一下:


檔案下載:


0 意見:

程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.