【问题标题】:Should I disable WebClient caching?我应该禁用 WebClient 缓存吗?
【发布时间】:2012-03-25 09:30:59
【问题描述】:

WebClient.DownloadStringAsync 会缓存服务器响应。 一旦从服务器收到响应后,即使没有互联网连接,我也会收到响应!

WebClient 缓存是否足够智能,可以根据服务器响应确定缓存多长时间? 还是它有问题,我应该禁用缓存。

背景信息:

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

提琴手踪迹:

GET /stats/eurofxref/eurofxref-daily.xml HTTP/1.1 接受:/ 参考:file:///Applications/Install/4D0DF1F7-1481-45CA-86BE-C14FF5CCD955/Install/ 接受编码:身份 用户代理:NativeHost 主办方:www.ecb.europa.eu 连接:保持活动状态

HTTP/1.1 200 正常 日期:2012 年 3 月 25 日星期日 08:54:40 GMT 服务器:Apache/2.2.3 (Linux/SUSE) 最后修改时间:格林威治标准时间 2012 年 3 月 23 日星期五 13:31:39 ETag:“19d4e5-6a9-4bbe90b5904c0” 接受范围:字节 内容长度:1705 保活:超时=3,最大值=200 连接:保持活动 内容类型:文本/xml 设置 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

【问题讨论】:

  • 不是重复的:我想知道“如果”我应该禁用缓存而不是如何禁用缓存。我不清楚电话 WebClient 电话使用什么算法进行缓存。

标签: windows-phone-7 webclient


【解决方案1】:

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

【讨论】:

  • 我刚刚通过测试确认 HttpWebRequest 默认不缓存。有谁知道 WebClient 缓存了多长时间,或者是什么让它再次进入网站?
猜你喜欢
  • 2011-04-18
  • 2023-03-03
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多