2012-03-25 72 views
1

WebClient.DownloadStringAsync会缓存服务器响应。 一旦得到服务器的响应,即使没有互联网连接,我也会得到回应!我应该禁用WebClient缓存吗?

WebClient缓存是否足够智能以从服务器响应中确定要缓存多久? 或者它是越野车,我应该禁用缓存。

Backgound信息:

网址:http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml

提琴手跟踪:

GET /stats/eurofxref/eurofxref-daily.xml HTTP/1.1 接受:/ 的Referer:文件: ///应用程序/安装/ 4D0DF1F7-1481-45CA-86BE-C14FF5CCD955/Install/ Accept-Encoding:identity User-Agent:NativeHost Host:www.ecb.europa.eu 连接:保持活动

HTTP/1.1 200 OK 日期:孙老师,2012年3月25日8时54分40秒GMT 服务器:Apache/2.2.3(Linux的/ SUSE) 的Last-Modified:周五,23 2012年3月十三点31分39秒GMT 的ETag: “19d4e5-6a9-4bbe90b5904c0” 接受-范围:字节 的Content-Length:1705 保持活动:超时= 3,最大= 200 连接:保持活动 内容-Type:text/xml Set-Cookie:BIGipServerPOOL.www.ecb.europa.eu_HTTP = 2684883628.16415.0000;路径=/ ...

通过头禁用缓存不起作用:

.Headers( “缓存控制”)= “无缓存” .Headers( “HttpRequestHeader.IfModifiedSince”)= DateTime.UtcNow.ToString()

通过附加UNIQA参数禁用缓存的工作原理:

“http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml” &“MakeRequestUnique? =“& Environment.TickCount

+0

可能的重复:http://stackoverflow.com/questions/5173052/how-do-you-disable-caching-with-webclient-and-windows-phone-7 – 2012-03-25 09:53:00

+0

不是重复的:我想知道“如果“我应该禁用缓存而不是如何。我不清楚,手机WebClient手机用于缓存的算法是什么。 – 2012-03-26 11:45:27

回答

1

集成缓存根本不聪明。所以如果你在查询页面时期望得到不同的结果,你必须绕过它。我说'绕过',因为我不知道用WebClient禁用它(我认为如果直接使用HttpRequest类,它不会被启用)。 所以如果你想使用WebClient,最好的方法是在请求中附加一个随机参数。

+0

我刚刚通过测试确认HttpWebRequest默认不会缓存。是否有人知道WebClient能够缓存多长时间,或者知道WebClient再次访问该网站的内容? – 2012-04-01 08:24:04