vb中webbrowser控件缓存问题邪道解决方法
最近使用VB6做一个简单的小软件,使用到WEBBROWSER控件来做个浏览器。但是缓存问题一直很难控制,总是显示缓存过的页面。查了很多资料,有关的信息就这么几条:
1,WEBBOWSER控件的缓存方式可以用IE来控制,也就是在IE[Internet选项]->[常规]->[Internet临时文件]的设置里去更改。但是作为一个独立运行的软件,不能让用户去IE里做设置。
2,本来WEBBROWSER的Navigate2方法提供了缓存控制参数:1,2,4,8,但实际上并没有实现这些参数的控制,所以是无效的。
3,可以用WINDOWS的API来删除缓存,但WEBBROWSER控件的缓存文件和IE放在一起,分不出来。API好象是根据条目序号来定位删除的文件,所以这种方法会把IE的缓存也删了。
这样一来,问题就不好解决了。但好在用这个软件主要浏览的站点是可以控制的,所以可以在两方面用邪道方法绕开缓存。主要是两步:
1,在VB程序里,执行WEBBROWSER的Navigate方法之前,把URL后面加一个CACHE参数,参数值用个随机数。这样一来,所有从VB程序直接写URL访问的地址都不一样了,从而避免缓存。函数如下:
Public Function ranURL(ByVal strURL As String) As String
Dim IMFlag As Integer
Dim cacheNU As Long
IMFlag = InStr(strURL, "?") '判断URL是否带参数
cacheNU = Fix(Timer()) '取时间做随机数
If IMFlag > 0 Then
ranURL = strURL & "&cache=" & cacheNU
Else
ranURL = strURL & "?cache=" & cacheNU
End If
End Function
2,在服务器端页面里,所有页面上的链接全在后面加一个CACHE参数,也用一个随机数。这样保证在VB程序里点击页面链接访问的地址也都不一样。
评论