2009-03-19 6 views
1

WebClient 또는 HttpRequest/REsponse를 사용하여 이미지를 http 호출합니다..NET HttpRequests Windows 시스템 캐시 사용

캐싱이 브라우저에서 어떻게 작동하는지 잘 모르겠지만 WebClient 또는 WebHttpRequest에서 브라우저가 활용하는 시스템 "임시 인터넷 파일"캐시를 사용하도록 설정하는 방법이 있습니까?

아니면 내 디스크 캐셔를 써야합니까?

답변

0

요청한 리소스가 이미 요청 된 경우 HTTP 요청을하고 로컬 캐시에 액세스하려는 경우 자신의 캐시를 작성해야합니다.

많은 구현 방법이 있습니다. 그것은 실제로 얼마나 많은 다른 리소스를 요청할 것인지, 얼마나 자주 요청하는지에 달려 있습니다.

+0

감사합니다. 나는 방금 자기 자신을 쓰는 것을 끝내었다. API를 얻는데 5 분 밖에 걸리지 않았습니다. – CVertex

+0

@Chris에 만족했습니다 : 이것에 대한 문서가 있습니까? 나는 이것이 사실이라고 확신하지 않는다. – AnthonyWJones

+0

아니, 그리고 HttpRuntime.Cache 최악의 경우 – annakata

4

CachePolicy 속성을 설정하여 시스템 캐시를 사용하도록 WebRequest에 지시 할 수 있습니다.

다음 코드 (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();