Internet explorer 如何检查我是否成功地清除了IE';s缓存?

Internet explorer 如何检查我是否成功地清除了IE';s缓存?,internet-explorer,caching,Internet Explorer,Caching,我正在使用编程方式清除IE的缓存,我想验证我是否正确地执行了该操作 清除缓存后,我是否应该期望临时Internet文件文件夹为空?(事实并非如此) 如果不是,那么在访问站点时,确定浏览器是否正在使用缓存的最简单方法是什么 澄清:我们的应用程序与浏览器交互,我写了两个功能,删除cookie和清除缓存。检查删除cookies功能、登录站点、删除cookies、刷新、您已注销都非常简单。但是现在QA打开了一个关于clear cache没有清空Internet临时文件目录的错误。我想指导他们如何测试该

我正在使用编程方式清除IE的缓存,我想验证我是否正确地执行了该操作

清除缓存后,我是否应该期望临时Internet文件文件夹为空?(事实并非如此)

如果不是,那么在访问站点时,确定浏览器是否正在使用缓存的最简单方法是什么



澄清:我们的应用程序与浏览器交互,我写了两个功能,删除cookie和清除缓存。检查删除cookies功能、登录站点、删除cookies、刷新、您已注销都非常简单。但是现在QA打开了一个关于clear cache没有清空Internet临时文件目录的错误。我想指导他们如何测试该功能,但想避免使用HTTP嗅探器(如Yuval所建议的),有没有更简单的方法?

wininet url缓存是一种奇怪而邪恶的生物。有几件事要记住。第一:如果你打开了IE并且它正在运行,缓存中的一些条目可能会被锁定,你将无法删除它们。第二:不是URL缓存中的所有条目都属于IE,也不是internet临时文件文件夹中容器中的所有条目都与浏览器URL缓存相关。第三:根据IE版本的不同,URL缓存容器可能会出现各种错误,导致其相关文件悬空。IE8可能修复了这些bug,也可能没有修复(我不确定)

确保所有内容都消失的最正确方法是使用FindFirst/FindTextUrlCacheGroup(),然后使用FindFirst/FindTextUrlCacheEntryEx()枚举组项。然后删除条目,然后删除组。历史是一个组,cookies是另一个组,等等。你可以跳过你不感兴趣的组

URL缓存本身只是一个美化的哈希表(位于index.dat文件中),它将URL映射到某些元数据。元数据包含资源的本地缓存文件名。我不确定删除URL缓存条目是否会实际删除磁盘上的资源,您可能需要使用DeleteFile()自己执行此操作

编辑:

如果您只想清除所有内容,可以使用inetcpl.cpl、ClearMyTracksByProcess。参数是位掩码。。。我不确定哪一位代表TIF,但它是较低的八位之一,因此应该相对容易计算出来。然而,这只适用于IE7和IE8


链接中还有其他想法。

显然临时互联网文件目录应该是空的

我的代码中有一个bug,原因是声明您应该传递
“cookie:
”访问:
NULL
,我认为这意味着:

Union("cookie:", "visited:") == NULL

情况并非如此,我必须传递
NULL
并过滤掉cookies(取决于
CacheEntryType
字段)。

是否需要通过编程检查浏览器是否使用缓存?如果没有,只需使用HttpWatch等工具,查看文件的来源(缓存/网络)。我不需要以编程方式进行检查。理想情况下,我想要的方法不包括安装其他应用程序,以便QA能够验证它是否有效。如果您的评论是正确的,当然,我认为是错误的。对不起,删除我的答案。我在问题中添加了一些说明。他们是如何检查的?他们是否在通信时执行
dir
和提示符,或者他们正在使用Windows资源管理器或其他工具?