2012-03-25 76 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