删除Internet缓存

    技术2022-05-19  19

        用浏览器浏览网页时,所有的网页资源其实都已经下载到本地,浏览器会把这些网页资源统一放到一个文件夹"Temporary Internet Files"里.可以通过查看"Internet临时文件"查看到所有的网页资源.以IE浏览器为例:依次打开 工具-Internet选项,"常规"页签里有个"Internet临时文件","设置"按钮里可以查看,移动,删除这些临时文件.

         IE缓存避免了网页占用过多内存,下次再浏览这些网页时就可以直接从缓存中读取,不需要重新下载,加快浏览速度!

         基于上面的原因,在对某个网站进行测试时,一般都会出现第一次打开时间相对比较长,以后就会很快的情况!这就造成测试的不准确性!为了测试打开网页的准确时间,需要每次打开网页之前都要清空IE缓存.利用WinInet API函数:FindFirstUrlCacheEntry(),FindNextUrlCacheEntry(),DeleteUrlCacheEntry(),FindCloseUrlCache()可以删除IE缓存.代码如下:

    BOOL CDeleteTempFileDlg::DelInetTempFiles() { BOOL bResult = FALSE; BOOL bDone = FALSE; LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL; DWORD dwTrySize, dwEntrySize = 4096; //内存大小 HANDLE hCacheDir = NULL; DWORD dwError = ERROR_INSUFFICIENT_BUFFER; do { switch (dwError) { case ERROR_INSUFFICIENT_BUFFER: delete [] lpCacheEntry; lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize]; lpCacheEntry->dwStructSize = dwEntrySize; dwTrySize = dwEntrySize; BOOL bSuccess; if (hCacheDir == NULL) bSuccess = (hCacheDir= FindFirstUrlCacheEntry(NULL, lpCacheEntry,&dwTrySize)) != NULL; //从Internet的高速缓存中找到特定入口 else //查找下一个缓存入口 bSuccess = FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize); if (bSuccess) dwError = ERROR_SUCCESS; else { dwError = GetLastError(); dwEntrySize = dwTrySize; // use new size returned } break; case ERROR_NO_MORE_ITEMS: //没有可删除的项目 bDone = TRUE; bResult = TRUE; break; case ERROR_SUCCESS: //不删除cookie if (!(lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY)) DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName); //删除Cache中指定的源文件名 // 查找下一个缓存入口 dwTrySize = dwEntrySize; if (FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize)) dwError = ERROR_SUCCESS; else { dwError = GetLastError(); dwEntrySize = dwTrySize; // use new size returned } break; default: bDone = TRUE; break; } if (bDone) { delete [] lpCacheEntry; if (hCacheDir) FindCloseUrlCache(hCacheDir); //关闭指定的缓存枚举句柄 } } while (!bDone); return bResult; }

     

    还要添加winnet.h头文件和引入库Wininet.lib.


    最新回复(0)