当前位置:  开发笔记 > 程序员 > 正文

如何清除HttpWebRequest的缓存

如何解决《如何清除HttpWebRequest的缓存》经验,为你挑选了2个好方法。

我正在开发一个专有的库,我遇到了缓存的一些问题HttpWebRequest.该库使用与下面相同的代码来发出请求:

var request = WebRequest.Create("http://example.com/") as HttpWebRequest;

request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.CacheIfAvailable);

尽管每个响应都不同,但外部资源不会禁止缓存.因此,我每次都得到相同的回应.

有没有办法清除HttpWebRequest缓存的内容?正确的解决方案是修复外部源或者更改缓存策略,但两者都不可能 - 因此问题.

清除高速缓存可能具有各种影响,因此优选地,解决方案是基于每个资源使高速缓存无效.



1> AMing..:
public static WebResponse GetResponseNoCache(Uri uri)
{
        // Set a default policy level for the "http:" and "https" schemes.
        HttpRequestCachePolicy policy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);
        HttpWebRequest.DefaultCachePolicy = policy;
        // Create the request.
        WebRequest request = WebRequest.Create(uri);
        // Define a cache policy for this request only. 
        HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
        request.CachePolicy = noCachePolicy;
        WebResponse response = request.GetResponse();
        Console.WriteLine("IsFromCache? {0}", response.IsFromCache);            
        return response;
}

您可以将缓存策略设置为对NoCacheNoStore的请求到HttpWebRequest.



2> Bradley Grai..:

HttpWebRequest使用System.Net.Cache.RequestCache缓存.这是一个抽象的类; Microsoft CLR中的实际实现,Microsoft.Win32.WinInetCache顾名思义,使用WinInet函数进行缓存.

这与Internet Explorer使用的缓存相同,因此您可以使用IE的"删除浏览历史记录"对话框手动清除缓存.(首先作为测试,确保清除WinInet缓存解决您的问题.)

假设清除WinInet缓存解决了问题,您可以通过P/Invoking到DeleteUrlCacheEntry WinInet API 以编程方式删除文件:

public static class NativeMethods
{
    [DllImport("WinInet.dll", PreserveSig = true, SetLastError = true)]
    public static extern void DeleteUrlCacheEntry(string url);
}


@MuiBienCarlota:在实践中,我发现它是.据我所知,Internet Explorer仍然使用WinInet缓存功能; 如果它和.NET是相同的用户帐户下运行,创建/`CreateUrlCacheEntry`和删除的文件`DeleteUrlCacheEntry`应该是在同一个地方.
推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有