Should I disable WebClient caching?

大城市里の小女人 提交于 2019-12-11 07:34:20

问题


WebClient.DownloadStringAsync does cache the server response. After once getting a response from the server I get a response even without internet connection!

Is WebClient caching smart enough to determine from the server response how long to cache? Or is it buggy and I should disable caching.

Backgound info:

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

Fiddler trace:

GET /stats/eurofxref/eurofxref-daily.xml HTTP/1.1 Accept: / Referer: file:///Applications/Install/4D0DF1F7-1481-45CA-86BE-C14FF5CCD955/Install/ Accept-Encoding: identity User-Agent: NativeHost Host: www.ecb.europa.eu Connection: Keep-Alive

HTTP/1.1 200 OK Date: Sun, 25 Mar 2012 08:54:40 GMT Server: Apache/2.2.3 (Linux/SUSE) Last-Modified: Fri, 23 Mar 2012 13:31:39 GMT ETag: "19d4e5-6a9-4bbe90b5904c0" Accept-Ranges: bytes Content-Length: 1705 Keep-Alive: timeout=3, max=200 Connection: Keep-Alive Content-Type: text/xml Set-Cookie: BIGipServerPOOL.www.ecb.europa.eu_HTTP=2684883628.16415.0000; path=/ ...

Disabling caching via Headers does not work:

.Headers("cache-control") = "no-cache" .Headers("HttpRequestHeader.IfModifiedSince") = DateTime.UtcNow.ToString()

Disabling caching via appending uniqa parameter works:

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


回答1:


The integrated cache isn't smart at all. So if you expect different results when querying the page, you have to bypass it. I say 'bypass' because there's no way I know of to disable it with the WebClient (I don't think it's enabled if you directly use the HttpRequest class). So if you want to use the WebClient, the best way is to append a random parameter to the request.



来源:https://stackoverflow.com/questions/9859137/should-i-disable-webclient-caching

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!