如何防止Silverlight缓存外部XML文件

时间:2014-07-02 13:59:34

标签: silverlight caching

我有一个Silverlight5应用程序(XAP),它严重依赖于对服务器的XML请求。

该应用程序将请求文件http:.... / Menu.xml,该文件由服务器不断更新。

当我在浏览器中查看XML文件时,它很好,但Silverlight的行为就好像它使用的是此文件的较旧缓存版本。

我在XML uri中添加了一个随机字符串参数,方法是附加"?= random"到XML URL的末尾,但我仍然遇到同样的问题。

   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 个答案:

答案 0 :(得分: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;
  }
}