9

我已经在谷歌上搜索了几个小时并试图弄清楚这一点,但我做不到。我在表单上有 1 个 webbrowser 控件,webbrowser1。

一旦我加载了一个页面,比如说 google.com,如果我使用webbrowser1.refresh()or webbrowser1.navigate("google.com"),它不会重新加载页面,它已经缓存了它,所以它只是重新加载缓存。这在论坛或 craigslist 等页面上非常明显。

我需要在每次刷新之间清除缓存(不理想)或一起禁用缓存,有什么想法吗?我发现的唯一东西是过时的(vb6 或更低)。

4

8 回答 8

5

在您的页面中添加以下元标记

<meta http-equiv="cache-control" content="no-cache">
于 2012-05-16T05:25:13.027 回答
5

你可以试着打电话webbrowser1.Refresh(WebBrowserRefreshOption.Completely)。它应该刷新页面并显示最新版本,例如 IE 中的 ctrl+F5。请参阅此处此处了解更多信息。

于 2010-08-06T05:44:13.640 回答
1

在 .navigate 方法中,您传递了数字 2(无历史标志),但这只会杀死该导航的历史,不会杀死您点击链接时的历史。如果您想杀死被点击的链接的历史记录,那么您可以在 beforenavigate 事件期间拦截导航,通过设置 cancel = true 取消导航,然后使用事件提供的 URL,使用带有标志的 .navigate 重新进行导航再次设置为 2(无历史标志)。

至于 cookie 等其他缓存项,这些标志不起作用(尽管它们可能在当前版本中实现了这一点)... Soto 杀死所有实际需要的缓存项,通过查询用户以编程方式在 Web 浏览器控制之外执行此操作使用其他 API 缓存并删除它,可能在文档完成事件期间或浏览完成时。

另请注意,如果您使用 Web 浏览器控件终止历史记录,则 Web 浏览器控件 .goback 方法将不起作用(因为不幸的是它使用相同的历史记录,并且不会在内存中保留另一个历史记录列表)......所以当做一个goback,它会表现得好像没有什么可以返回:/。

如果您需要更多帮助,请告诉我。

于 2012-03-10T13:25:07.077 回答
1

使用navigate(url,4) 0x4=noCache标志

于 2012-06-30T14:49:26.283 回答
1

此页面显示如何清除一些临时文件,阅读它。我也有这个问题,但是当 .refresh() 对我没有用时,因为它不会触发 documentcomplete 事件。因此,当我希望重新加载时,我只需使用.navigate()并在导航之前调用

System.Diagnostics.Process.Start("rundll32.exe","InetCpl.cpl,ClearMyTracksByProcess 8")

为了清除缓存。

于 2011-09-08T06:34:53.760 回答
0

C# WebBrowser 控件:清除缓存而不清除 cookie

于 2010-08-10T03:34:33.080 回答
0

你不能禁用它。您可以刷新页面,在每次请求之前清除缓存,或者使用 Web 浏览器控件以外的其他东西。如果你想在每次请求之前清除缓存,网上有很多不好的信息。我会在这里向您推荐我的答案:https ://stackoverflow.com/a/22074463/1607218 。请注意,该页面上其他答案中发布的代码不可靠,并且存在大量错误,但希望我的回答能引导您朝着正确的方向前进:)

于 2014-02-27T16:31:32.987 回答
0

您可以尝试在 url 中添加一个随机数或 guid 作为参数。如:

var url = "http://google.com";
webBrowser.Navigate(url + "?refreshToken=" + Guid.NewGuid().ToString());

它并不优雅,但它确实有效。希望能帮助到你。

于 2012-03-09T17:18:12.713 回答