.NET HttpRequests使用Windows系统缓存

.NET HttpRequests使用Windows系统缓存,.net,windows,http,caching,.net,Windows,Http,Caching,我使用WebClient或HttpRequest/REsponse对图像进行http调用 我不确定缓存是如何专门用于浏览器的,但有没有办法让WebClient或WebHttpRequest使用浏览器使用的系统“临时internet文件”缓存 或者,我必须编写自己的磁盘缓存吗?如果您发出HTTP请求,并且如果请求的资源已被请求,您希望您的请求访问本地缓存,那么您必须编写自己的缓存 有许多潜在的实现。这实际上取决于您希望请求多少不同的资源,以及请求的频率 如果您发出HTTP请求,并且如果请求的资源已

我使用WebClient或HttpRequest/REsponse对图像进行http调用

我不确定缓存是如何专门用于浏览器的,但有没有办法让WebClient或WebHttpRequest使用浏览器使用的系统“临时internet文件”缓存


或者,我必须编写自己的磁盘缓存吗?

如果您发出HTTP请求,并且如果请求的资源已被请求,您希望您的请求访问本地缓存,那么您必须编写自己的缓存


有许多潜在的实现。这实际上取决于您希望请求多少不同的资源,以及请求的频率

如果您发出HTTP请求,并且如果请求的资源已经被请求,您希望您的请求访问本地缓存,那么您必须编写自己的缓存


有许多潜在的实现。这实际上取决于您希望请求多少不同的资源,以及请求的频率

您可以通过设置CachePolicy属性来指示WebRequest使用系统缓存

以下代码(取自)将请求缓存一天。缓存存储在当前用户的temporay internet files文件夹中(至少在Windows XP上)


通过设置CachePolicy属性,可以指示WebRequest使用系统缓存

以下代码(取自)将请求缓存一天。缓存存储在当前用户的temporay internet files文件夹中(至少在Windows XP上)


谢谢我只是写了我自己的。只花了5分钟就得到了API我很高兴with@Chris:有关于这方面的文件吗?我不相信这是真的。我也不相信,还有HttpRuntime.Cacheworst@Anthony你是什么意思?NET framework没有与IE结合。如果有办法,它是Windows API或IE程序集引用的一部分。没有,但IE没有实现HTTP协议weither,这是由WinInet完成的,WinInet还有其他客户端。因此,问题是WebClient是否使用WinInet堆栈(或模仿它),还是它的行为完全独立。我怀疑它是真的。谢谢。我只是写了我自己的。只花了5分钟就得到了API我很高兴with@Chris:有关于这方面的文件吗?我不相信这是真的。我也不相信,还有HttpRuntime.Cacheworst@Anthony你是什么意思?NET framework没有与IE结合。如果有办法,它是Windows API或IE程序集引用的一部分。没有,但IE没有实现HTTP协议weither,这是由WinInet完成的,WinInet还有其他客户端。因此,问题是WebClient是否使用WinInet堆栈(或模仿它),还是它的行为完全独立。我怀疑这是真的。
// 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();