2012-03-25 6 views
1

WebClient.DownloadStringAsync speichert die Serverantwort zwischen. Nachdem ich einmal eine Antwort vom Server bekommen habe bekomme ich eine Antwort auch ohne Internetverbindung!Sollte ich das WebClient-Caching deaktivieren?

Ist das WebClient-Caching intelligent genug, um aus der Serverantwort zu ermitteln, wie lange im Cache gespeichert werden soll? Oder ist es fehlerhaft und ich sollte Caching deaktivieren.

Backgound Info:

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

Fiddler Spur:

GET /stats/eurofxref/eurofxref-daily.xml HTTP/1.1 akzeptieren: / Referer: file: /// Anwendungen/Installieren/4D0DF1F7-1481-45CA-86BE-C14FF5CCD955/Installieren/ Akzeptieren: Identität Benutzer-Agent: NativeHost Host: www.ecb.europa.eu Connection: Keep-Alive-

HTTP/1.1 200 OK Datum: Sun, 25. März 2012 08.54.40 GMT Server: Apache/2.2.3 (Linux/SUSE) Last-Modified: Fr 23 März 2012 13.31.39 GMT ETag: "19d4e5-6a9-4bbe90b5904c0" Accept-Rang: Bytes Content-Length: 1705 Keep-Alive-: timeout = 3, max = 200 Connection: Keep-Alive- Inhalt -Type: text/xml Set-Cookie: BIGipServerPOOL.www.ecb.europa.eu_HTTP = 2684883628.16415.0000; path =/ ...

Deaktivieren Caching über Headers nicht funktioniert:

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

Deaktivieren Caching uniqa Parameter über das Anhängen funktioniert:

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

+0

Mögliche doppelte: http://stackoverflow.com/questions/5173052/how-do-you-disable-caching-with-webclient-and-windows-phone-7 –

+0

kein Duplikat: Ich möchte "wissen wenn "ich den Cache deaktivieren sollte und nicht wie. Mir ist nicht klar, welchen Algorithmus das Telefon-WebClient-Telefon zum Caching verwendet. –

Antwort

1

Der integrierte Cache ist überhaupt nicht intelligent. Wenn Sie also beim Abfragen der Seite andere Ergebnisse erwarten, müssen Sie diese umgehen. Ich sage 'umgehen', weil ich keine Möglichkeit habe, es mit dem WebClient zu deaktivieren (ich glaube nicht, dass es aktiviert ist, wenn Sie direkt die HttpRequest-Klasse verwenden). Wenn Sie also den WebClient verwenden möchten, fügen Sie am besten einen zufälligen Parameter an die Anfrage an.

+0

Ich habe gerade über einen Test bestätigt, dass HttpWebRequest standardmäßig nicht zwischenspeichert. Weiß jemand, wie lange WebClient zwischenspeichert oder warum er wieder auf die Website gelangt? –