2014-07-02 41 views
1

我有一個Silverlight5應用程序(XAP),它嚴重依賴於對服務器的XML請求。如何防止Silverlight緩存外部XML文件

該應用程序將請求一個文件http:..../Menu.xml,它由服務器不斷更新。

當我在瀏覽器中查看XML文件時很好,但Silverlight的行爲就好像它使用的是此文件的較舊緩存版本。

我已經添加了一個隨機字符串參數給XML URI,在XML URL的末尾添加「?= random」,但我仍然遇到同樣的問題。

file_uri_path = "http://adomain.com/.../Menu.xml"; 

    XmlClient.DownloadStringAsync(GetCCFKPath(file_uri_path)); 



    public static string GetCCFKPath(string path) 
    { 
     Random r = new Random(256780); 

     int random = r.Next(20000); 

     return path + "?ccfk=" + random ; 
    } 

回答

1

這可能只是IE的一個問題......你有沒有與Chrome相同的問題?

看到這個thread here,爲一個可能的決議。它使用以下腳本來獲取xml。

var request = new XMLHttpRequest(); 
request.open("GET", url, false); 
request.send(null); 
if(!request.getResponseHeader("Date")) 
{ 
    var cached = request; 
    request = new XMLHttpRequest(); 
    var ifModifiedSince = cached.getResponseHeader("Last-Modified"); 
    ifModifiedSince = (ifModifiedSince) ? 
    ifModifiedSince : new Date(0); // January 1, 1970 
    request.open("GET", url, false); 
    request.setRequestHeader("If-Modified-Since", ifModifiedSince); 
    request.send(""); 
    if(request.status == 304) 
    { 
    request = cached; 
    } 
} 
+0

我認爲這是一個可信的方法來嘗試。你可以使用'WebClient.GetWebRequest'來添加「If-Modified-Since」標題。 – McGarnagle