.NET HttpRequests с использованием системного кэша Windows - PullRequest
1 голос
/ 19 марта 2009

Я использую либо WebClient, либо HttpRequest / REsponse для выполнения http-вызовов для изображений.

Я не уверен, как кеширование работает в браузерах, но есть ли способ, чтобы WebClient или WebHttpRequest могли использовать системный кеш "временных файлов Интернета", который использует браузер?

Или я должен написать собственный дисковый кешер?

Ответы [ 2 ]

4 голосов
/ 14 сентября 2009

Вы можете указать WebRequest использовать системный кеш, установив свойство CachePolicy.

Следующий код (взят из MSDN ) кэширует запросы на один день. Кэш хранится в папке временных файлов Интернета текущего пользователя (по крайней мере, в Windows XP).

// Create a policy that allows items in the cache
// to be used if they have been cached one day or less.
HttpRequestCachePolicy requestPolicy = 
  new HttpRequestCachePolicy (HttpCacheAgeControl.MaxAge,
  TimeSpan.FromDays(1));

WebRequest request = WebRequest.Create (resource);

// Set the policy for this request only.
request.CachePolicy = requestPolicy;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

// Determine whether the response was retrieved from the cache.
Console.WriteLine ("The response was retrieved from the cache : {0}.",
 response.IsFromCache);

Stream s = response.GetResponseStream ();
// do something with the response stream
s.Close();
response.Close();
0 голосов
/ 19 марта 2009

Если вы делаете HTTP-запросы и хотите, чтобы ваши запросы обращались к локальному кешу, если запрошенный ресурс уже был запрошен, вам придется написать собственный кеш.

Есть много потенциальных реализаций. Это действительно зависит от того, сколько разных ресурсов вы ожидаете запросить и как часто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...