2012-03-25 29 views
1

WebClient.DownloadStringAsyncは、サーバーの応答をキャッシュします。 一度サーバーからの応答を取得した後、私はインターネット接続なしでも応答を得ます!WebClientのキャッシュを無効にする必要がありますか?

WebClientのキャッシングは、サーバーの応答からキャッシュの長さを判断するのに十分スマートですか? バグがあり、キャッシングを無効にする必要があります。

Backgound情報:

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

フィドラートレース:

GET /stats/eurofxref/eurofxref-daily.xml HTTP/1.1 受け入れ:/ リファラー:ファイル: ///アプリケーション/インストール/ 4D0DF1F7-1481-45CA-86BE-C14FF5CCD955 /インストール/ アクセプトエンコーディング:ID ユーザエージェント:NativeHost ホスト: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 接続:キープアライブ コンテンツをタイプ:テキスト/ xml セットクッキー:BIGipServerPOOL.www.ecb.europa.eu_HTTP = 2684883628.16415.0000;ヘッダを経由してキャッシュを無効にするパス=/ ...

は動作しません:

.Headers( "キャッシュ制御")= "キャッシュなし" .Headers( "HttpRequestHeader.IfModifiedSince")= DateTime.UtcNow.ToString(ユニカパラメータを追加する介して、キャッシュを無効にする)

作品:?

"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 –

+0

重複していない:私は " 「キャッシュを無効にする必要があります。私はWebClient電話機がキャッシュに使用するアルゴリズムは何であるかわかりません。 –

答えて

1

統合キャッシュはスマートではありません。したがって、ページを照会するときに異なる結果が予想される場合は、それをバイパスする必要があります。 WebClientで無効にする方法がわからないため、私は 'バイパス'と言います(HttpRequestクラスを直接使用すると有効にならないと思います)。 WebClientを使用する場合は、リクエストにランダムなパラメータを追加することをお勧めします。

+0

私は、HttpWebRequestがデフォルトでキャッシュしないことをテストによって確認しました。 WebClientがキャッシュをどのくらいの期間保持しているのか、WebClientがWebサイトに再びアクセスするのは誰か知っていますか? –

関連する問題