Должен ли я отключить кэширование WebClient? - PullRequest
1 голос
/ 25 марта 2012

WebClient.DownloadStringAsync выполняет кеширование ответа сервера. Получив ответ от сервера, я получаю ответ даже без подключения к интернету!

Достаточно ли уместно кэширование в WebClient, чтобы по отклику сервера определить, как долго нужно кэшировать? Или это глючит и я должен отключить кеширование.

Справочная информация:

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

След Fiddler:

GET /stats/eurofxref/eurofxref-daily.xml HTTP / 1.1 Принять: / Ссылка: file: /// Applications / Install / 4D0DF1F7-1481-45CA-86BE-C14FF5CCD955 / Install / Accept-Encoding: личность Пользователь-агент: NativeHost Ведущий: www.ecb.europa.eu Подключение: Keep-Alive

HTTP / 1.1 200 OK Дата: вс, 25 марта 2012 08:54:40 GMT Сервер: Apache / 2.2.3 (Linux / SUSE) Дата последнего изменения: пт, 23 марта 2012 13:31:39 GMT ETag: "19d4e5-6a9-4bbe90b5904c0" Accept-Ranges: байты Длина контента: 1705 Keep-Alive: время ожидания = 3, максимум = 200 Подключение: Keep-Alive Тип контента: текст / xml Set-Cookie: BIGipServerPOOL.www.ecb.europa.eu_HTTP = 2684883628.16415.0000; Путь = / ...

Отключение кэширования через заголовки не работает:

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

Отключение кэширования с помощью добавления параметра uniqa работает:

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

1 Ответ

1 голос
/ 25 марта 2012

Встроенный кеш совсем не умен.Так что, если вы ожидаете, что при запросе страницы будут другие результаты, вы должны обойти это.Я говорю «обойти», потому что я не знаю, как отключить его с помощью WebClient (я не думаю, что он включен, если вы напрямую используете класс HttpRequest).Поэтому, если вы хотите использовать WebClient, лучше всего добавить случайный параметр в запрос.

...