Как я могу проверить, успешно ли я очистил кеш IE? - PullRequest
2 голосов
/ 16 марта 2010

Я очищаю кеш IE программно, используя DeleteUrlCacheEntry(), и я хотел бы убедиться, что я сделал это правильно.

Стоит ли ожидать, что папка Temporary Internet Files будет пустой после очистки кэша? (это не так)

Если нет, то как проще всего определить, использует ли браузер свой кеш при доступе к сайту?


Уточнение: Наше приложение взаимодействует с браузером, я написал две функции: удалить куки и очистить кеш. Это довольно просто проверить функцию удаления куки, войти на сайт, удалить куки, обновить, вы вышли из системы. Однако теперь QA открыла ошибку о том, что очистить кеш не опустошил каталог Temporary Internet Files . Я хочу указать им, как протестировать эту функцию, но хотел бы избежать использования сниффера HTTP (как предложил Ювал), есть ли более простой способ?

Ответы [ 2 ]

2 голосов
/ 16 марта 2010

Кэш URL Вининета - странное и нечестивое существо. Есть несколько вещей, которые нужно иметь в виду. Во-первых: если у вас открыт IE и он что-то делает, некоторые записи в кеше могут быть заблокированы, и вы не сможете их удалить. Второе: не все записи в кэше URL-адресов принадлежат IE, и не все записи в контейнерах в папке временных файлов Интернета связаны с кэшем URL-адресов браузера. Третье: в зависимости от вашей версии IE существуют различные ошибки, из-за которых контейнеры кеша URL могут быть повреждены, что приводит к зависанию связанных с ними файлов. Эти ошибки могут быть или не быть исправлены для IE8 (я не уверен).

Самый правильный способ убедиться, что все прошло, - это использовать FindFirst / FindNextUrlCacheGroup (), а затем FindFirst / FindNextUrlCacheEntryEx () для перечисления элементов группы. Затем удалите записи, затем удалите группу. История - это группа, куки - это другая группа и т. Д. Вы можете пропустить группы, которые вам не интересны.

Сам кеш URL является просто прославленной хеш-таблицей (которая находится в файле index.dat), которая отображает URL на некоторые метаданные. Метаданные содержат имя файла локального кэша ресурса. Я не уверен, что удаление записи кэша URL фактически удаляет ресурс на диске, возможно, вам придется сделать это самостоятельно с помощью DeleteFile ().

Edit:

Если вы просто хотите очистить все, вы можете использовать inetcpl.cpl, ClearMyTracksByProcess trick . Аргумент является битовой маской ... Я не уверен, какой бит представляет TIF, но это один из младших восьми, поэтому с ним должно быть относительно легко разобраться. Однако это работает только в IE7 и IE8.

В ссылке есть и другие идеи.

0 голосов
/ 18 марта 2010

Очевидно, что каталог Temporary Internet Files должен быть пустым!

У меня была ошибка в моем коде из-за того, что FindFirstUrlCacheEntry утверждает, что вы должны передать "cookie:", "visited: или NULL, и я подумал, что это означает, что:

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

Это не тот случай, мне пришлось пропустить NULL и отфильтровать куки (в зависимости от поля CacheEntryType).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...