WebClient.DownloadStringAsync会缓存服务器响应。 一旦从服务器得到响应,即使没有互联网连接,我也会收到回复!
WebClient缓存是否足够智能,可以从服务器响应中确定缓存多长时间? 或者它是错误的,我应该禁用缓存。
Backgound信息:
网址:http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
Fiddler追踪:
获取/stats/eurofxref/eurofxref-daily.xml HTTP / 1.1 接受: / 参考文献:file:/// Applications / Install / 4D0DF1F7-1481-45CA-86BE-C14FF5CCD955 / Install / Accept-Encoding:身份 用户代理:NativeHost 主持人:www.ecb.europa.eu 连接:Keep-Alive
HTTP / 1.1 200好的 日期:太阳,2012年3月25日08:54:40 GMT 服务器:Apache / 2.2.3(Linux / SUSE) 最后修改时间:2012年3月23日星期五13:31:39 GMT ETag:“19d4e5-6a9-4bbe90b5904c0” Accept-Ranges:字节 内容长度:1705 Keep-Alive:超时= 3,最大= 200 连接:保持活力 内容类型:text / xml Set-Cookie:BIGipServerPOOL.www.ecb.europa.eu_HTTP = 2684883628.16415.0000;路径= / ...
通过标头禁用缓存不起作用:
.Headers(“cache-control”)=“no-cache” .Headers(“HttpRequestHeader.IfModifiedSince”)= DateTime.UtcNow.ToString()
通过附加uniqa参数禁用缓存有效:
“http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml”& “?MakeRequestUnique =”& Environment.TickCount
答案 0 :(得分:1)
集成缓存根本不智能。因此,如果您在查询页面时期望得到不同的结果,则必须绕过它。我说“绕过”是因为我无法用WebClient禁用它(如果直接使用HttpRequest类,我认为它没有启用)。 因此,如果您想使用WebClient,最好的方法是在请求中附加一个随机参数。