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程序里点击页面链接访问的地址也都不一样。

link

评论

Popular Posts

《活法》作者:[日]稻盛和夫 pdf下载

Microsoft 365安装包下载(Office桌面应用)

解决部分网站禁止复制内容的js脚本(无需安装插件)

使用AdGuard的公共dns屏蔽广告

麦当劳免费Wifi帐号密码及连接设置

月光宝盒 - 提供网站数据备份服务

Debian 12上使用Nginx代理TCP流量,并配置IPv6白名单访问控制

你恨你的亲人吗?

中兴ZTE H618B 路由器固件刷机备忘

google voice 无限短信接口程序