如何防止Silverlight缓存外部XML文件
我有一个Silverlight5应用程序(XAP),它严重依赖于对服务器的XML请求 应用程序将请求一个由服务器不断更新的文件http:../Menu.xml 当我在浏览器中查看XML文件时,一切正常,但是Silverlight的行为就好像它使用的是该文件的旧缓存版本一样 我通过在XML URL的末尾添加“?=random”向XML uri添加了一个随机字符串参数,但仍然遇到同样的问题如何防止Silverlight缓存外部XML文件,silverlight,caching,Silverlight,Caching,我有一个Silverlight5应用程序(XAP),它严重依赖于对服务器的XML请求 应用程序将请求一个由服务器不断更新的文件http:../Menu.xml 当我在浏览器中查看XML文件时,一切正常,但是Silverlight的行为就好像它使用的是该文件的旧缓存版本一样 我通过在XML URL的末尾添加“?=random”向XML uri添加了一个随机字符串参数,但仍然遇到同样的问题 file_uri_path = "http://adomain.com/.../Menu.xml";
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 ;
}
这可能只是IE的一个问题。。。你对Chrome也有同样的问题吗 请参见此,以获得可能的解决方案。它使用以下脚本获取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;
}
}
我认为这是一种可信的尝试方法。您可以使用
WebClient.GetWebRequest
添加“If Modified-Since”标题。