我一直在谷歌搜索数小时并试图解决这个问题,我不能。 我在表单webbrowser1上有1个webbrowser控件。
一旦我加载了一个页面,比如google.com,如果我使用webbrowser1.refresh()
或webbrowser1.navigate("google.com")
,它就不会重新加载页面,它会将其缓存,因此它只是重新加载缓存。这在论坛或craigslist这样的网页上非常明显。
我需要清除每次刷新之间的缓存(不理想)或者一起禁用缓存,任何想法?我发现的唯一的东西已经过时(vb6或更低)。
答案 0 :(得分:5)
您可以尝试拨打webbrowser1.Refresh(WebBrowserRefreshOption.Completely)
。它应刷新页面并显示最新版本,如IE中的ctrl + F5。请参阅here和here了解更多信息。
答案 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。请注意,该页面上其他答案中发布的代码不可靠,而且非常多,但希望我的答案会引导您朝着正确的方向前进:)