如何在.NET WebBrowser控件中禁用缓存?

时间:2010-08-06 05:10:11

标签: vb.net caching browser webbrowser-control disable-caching

我一直在谷歌搜索数小时并试图解决这个问题,我不能。 我在表单webbrowser1上有1个webbrowser控件。

一旦我加载了一个页面,比如google.com,如果我使用webbrowser1.refresh()webbrowser1.navigate("google.com"),它就不会重新加载页面,它会将其缓存,因此它只是重新加载缓存。这在论坛或craigslist这样的网页上非常明显。

我需要清除每次刷新之间的缓存(不理想)或者一起禁用缓存,任何想法?我发现的唯一的东西已经过时(vb6或更低)。

8 个答案:

答案 0 :(得分:5)

您可以尝试拨打webbrowser1.Refresh(WebBrowserRefreshOption.Completely)。它应刷新页面并显示最新版本,如IE中的ctrl + F5。请参阅herehere了解更多信息。

答案 1 :(得分:5)

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

<meta http-equiv="cache-control" content="no-cache">

答案 2 :(得分:1)

This page shows如何清除一些临时文件,阅读它。我也有这个问题,但是当.refresh()对我没用时,因为它没有触发documentcomplete事件。因此,当我想重新加载时,我只需使用.navigate(),然后在导航之前调用

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

以清除缓存。

答案 3 :(得分:1)

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

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

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

如果您需要更多帮助,请与我联系。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

答案 6 :(得分:0)

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

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

它不优雅,但它有效。希望它有所帮助。

答案 7 :(得分:0)

您无法禁用它。您可以刷新页面,在每个请求之前清除缓存,也可以使用Web浏览器控件之外的其他内容。如果要在每个请求之前清除缓存,则在线存在大量不良信息。我建议你回答我的问题:https://stackoverflow.com/a/22074463/1607218。请注意,该页面上其他答案中发布的代码不可靠,而且非常多,但希望我的答案会引导您朝着正确的方向前进:)

相关问题