2010-03-16 40 views
2

我正在使用DeleteUrlCacheEntry()以編程方式清除IE緩存,我想驗證我是否正確執行了此操作。如何檢查我是否成功清除IE的緩存?

我應該在清除緩存後期望臨時Internet文件夾爲空嗎? (不是)

如果不是,那麼確定瀏覽器在訪問網站時是否使用緩存的最簡單方法是什麼?


澄清:我們的應用程序與瀏覽器進行交互,我寫了兩個功能,刪除cookies和清除緩存。檢查刪除cookies功能,登錄網站,刪除cookies,刷新,您已經註銷非常簡單。然而,現在QA打開了一個關於清除緩存沒有清空臨時Internet文件目錄的錯誤。我想指導他們如何測試功能,但想避免使用HTTP嗅探器(如Yuval建議),有沒有更簡單的方法?

+1

您是否需要以編程方式檢查瀏覽器是否正在使用緩存?如果沒有,只需使用HttpWatch之類的工具並查看文件來自哪裏(緩存/網絡)。 – 2010-03-16 13:02:42

+0

我不需要以編程方式檢查。理想情況下,我想要一種不包括安裝其他應用程序的方式,以便QA能夠驗證它是否有效。 – Motti 2010-03-16 13:09:50

+0

重新評論,當然,我想錯了。對不起,刪除我的答案。 – 2010-03-16 13:20:57

回答

0

顯然臨時Internet文件目錄應該爲空!

我在我的代碼中的錯誤是由於這樣的事實,FindFirstUrlCacheEntry狀態,你應該通過"cookie:""visited:NULL,我認爲這意味着:

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

這是不是這樣的,我有通過NULL並過濾掉cookie(取決於CacheEntryType字段)。

2

wininet的url緩存是一個奇怪和邪惡的生物。有幾件事要記住。首先:如果您打開IE瀏覽器並執行操作,緩存中的某些條目可能會被鎖定,您將無法刪除它們。其次:並非URL高速緩存中的所有條目都屬於IE,並且並非臨時Internet文件夾中的容器中的所有條目都與瀏覽器URL高速緩存相關。第三:根據你的IE版本,URL緩存容器可能會損壞,導致它們相關的文件出現問題。這些錯誤可能會或可能不會被修復爲IE8(我不確定)。

確保一切消失的最正確方法是使用FindFirst/FindNextUrlCacheGroup(),然後使用FindFirst/FindNextUrlCacheEntryEx()枚舉組項。然後刪除條目,然後刪除組。歷史記錄是一個組,Cookie是另一個組,等等。您可以跳過您不感興趣的組。

URL緩存本身只是一個榮耀的散列表(位於index.dat文件中)一些元數據的URL。元數據包含資源的本地緩存文件名。我不確定刪除URL緩存項目實際上是否刪除了磁盤上的資源,但您可能必須使用DeleteFile()自己執行此操作。

編輯:

如果你只是想清除一切,你可以使用inetcpl.cpl,ClearMyTracksByProcess trick。該參數是一個位掩碼...我不確定哪個位代表TIF,但是它是八位數中的一個,因此應該比較容易找出它。但是,這隻適用於IE7和IE8。

鏈接中還有其他想法。

+0

我在問題中添加了一些說明。 – Motti 2010-03-16 16:35:55

+0

他們如何檢查?他們是在命令提示符下執行'dir',還是使用Windows資源管理器或其他工具? – 2010-03-16 16:52:26

+0

Windows資源管理器 – Motti 2010-03-18 10:15:23