我有一个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 ;
}
答案 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;
}
}