TWebBrowser的Cache陷阱
来源:互联网 发布:python语言入门pdf下载 编辑:程序博客网 时间:2024/04/30 12:18
最近在给银行制作一个在线交易软件的时候,使用了TWebBrowser来获得交易列表。具体过程是客户点击查询按钮后,使用TWebBrowser访问银行的一个xml页面,从而得到交易列表信息。很快的,系统制作完成了,同时经过测试,交易列表显示正常,看上去似乎可以交工了。
在客户决定试上线的那天下午,突然发现:一开始做了一个交易,访问交易记录,嗯,一切正常;再作一个交易,访问交易记录,嗯?找不到刚刚做的交易。再作一个交易,还是这样。毫无疑问,有bug了。转过头来,看见了客户惊异的眼神,心知时间不等人啊。
时间紧迫,赶紧查找问题,使用IE访问xml页面,有这两个交易,说明交易成功了,并且交易列表也正常的,排查代码,也没什么问题,怎么回事呢?
再打开软件,查询交易,正常的,有这两天交易记录。再作再查询,没有新增的交易。退出软件并重新运行,交易列表又是正常的,到此,事情有点明了了,刚刚运行软件,访问这个页面,正常,再以后访问这个页面结果都是第一次访问的结果。难道,这就是传说中的IE Cache功能?
问题找到了,在同个进程中使用TWebBrowser访问同一个URL,会使用IE的Cache功能,现在就看怎么解决。有两个方法:一是使用控件属性或者方法控制IE浏览页面时禁止Cache功能。新建一个工程,放了TWebBrowser、TWebBrowserEx、TEmbeddedWB几个控件,一一设置属性,测试。没有任何效果,IE的Cache功能像挥之不去的噩梦一般展现出惊人的毅力。
没有多余的时间去慢慢研究了,只有试试另一个方法,那就是在TWebBrowser浏览页面之前,先清空该页面的Cache,毫无疑问,该是使用API的时候了,打开msdn,搜索Cache,上下看了几遍,瞄准了DeleteUrlCacheEntry这个函数。
看看它的定义:BOOL DeleteUrlCacheEntry(LPCTSTR lpszUrlName);
再看看说明:Removes the file associated with the source name from the cache, if the file exists.
不错,正是它,还好,从98到xp全支持,马上在TWebBrowser的Navigate函数前加上DeleteUrlCacheEntry调用,千万别忘了加上WinInet单元引用。测试,OK,正常了。
回头看看,IE本来很8错的Cache功能却带了一个小小的陷阱,而这个陷阱的解决却或多或少有点运气的成分,可是天知道还有多少这样的“陷阱”在等着我们。
在客户决定试上线的那天下午,突然发现:一开始做了一个交易,访问交易记录,嗯,一切正常;再作一个交易,访问交易记录,嗯?找不到刚刚做的交易。再作一个交易,还是这样。毫无疑问,有bug了。转过头来,看见了客户惊异的眼神,心知时间不等人啊。
时间紧迫,赶紧查找问题,使用IE访问xml页面,有这两个交易,说明交易成功了,并且交易列表也正常的,排查代码,也没什么问题,怎么回事呢?
再打开软件,查询交易,正常的,有这两天交易记录。再作再查询,没有新增的交易。退出软件并重新运行,交易列表又是正常的,到此,事情有点明了了,刚刚运行软件,访问这个页面,正常,再以后访问这个页面结果都是第一次访问的结果。难道,这就是传说中的IE Cache功能?
问题找到了,在同个进程中使用TWebBrowser访问同一个URL,会使用IE的Cache功能,现在就看怎么解决。有两个方法:一是使用控件属性或者方法控制IE浏览页面时禁止Cache功能。新建一个工程,放了TWebBrowser、TWebBrowserEx、TEmbeddedWB几个控件,一一设置属性,测试。没有任何效果,IE的Cache功能像挥之不去的噩梦一般展现出惊人的毅力。
没有多余的时间去慢慢研究了,只有试试另一个方法,那就是在TWebBrowser浏览页面之前,先清空该页面的Cache,毫无疑问,该是使用API的时候了,打开msdn,搜索Cache,上下看了几遍,瞄准了DeleteUrlCacheEntry这个函数。
看看它的定义:BOOL DeleteUrlCacheEntry(LPCTSTR lpszUrlName);
再看看说明:Removes the file associated with the source name from the cache, if the file exists.
不错,正是它,还好,从98到xp全支持,马上在TWebBrowser的Navigate函数前加上DeleteUrlCacheEntry调用,千万别忘了加上WinInet单元引用。测试,OK,正常了。
回头看看,IE本来很8错的Cache功能却带了一个小小的陷阱,而这个陷阱的解决却或多或少有点运气的成分,可是天知道还有多少这样的“陷阱”在等着我们。
- TWebBrowser的Cache陷阱
- TWebBrowser的基本应用
- TWebBrowser的基本应用
- TWebBrowser的基本应用
- TWebBrowser的基本应用
- TWebBrowser的基本应用
- Delphi的TWebBrowser编程综述
- Delphi的TWebBrowser编程综述
- Delphi的TWebBrowser编程综述
- Delphi的TWebBrowser编程综述
- Delphi的TWebBrowser编程综述
- Delphi的TWebBrowser编程参考
- Delphi中TWebBrowser的用法
- 如何获取TWebBrowser控件的超级链接
- ZT:Delphi的TWebBrowser编程综述
- Delphi 中TWebBrowser的扩展控件TExWebBrowser
- Delphi下TWebBrowser控件的使用
- TWebBrowser滚动条的显示问题探讨。
- Desertificaton
- 如何获取exe,dll中的图标以及源程序
- 显示一个对象的继承等级,Class类的应用
- 使用程序自动生成ODBC数据源
- 程序员的.NET时代(提高篇)
- TWebBrowser的Cache陷阱
- ASP用JMail、CDO发送邮件[转贴 http://www.blueidea.com/tech/program/2003/721.asp]
- 大学中的中秋节
- Accessing SapDB via unixODBC
- .NET平台下WEB应用程序的部署
- Desertification_2
- 搭建WAP应用开发环境 (转载)
- 每刷新一次就换一次图片的代码
- 检查目录是否存在,不存在则创建之