2008-09-16 37 views

回答

8

呼叫DeleteUrlCacheEntry只是在調用URLDownloadToFile。 您將需要對Wininet.lib

4

是的,它在默認情況下拉動文件的緩存版本。爲了避免高速緩存文件完全,傳遞一個IBindStatusCallback對象在URLDownloadToFile的lpfnCB 參數()。在你實現IBindStatusCallback :: GetBindInfo()方法,包括BINDF_GETNEWESTVERSION標誌,以及可選的BINDF_NOWRITECACHE標誌,在價值,你通過grfBINDF參數返回。如果希望緩存文件(如果存在)更新而不是skippe,請改爲指定BINDF_RESYNCHRONIZE標誌。

+0

你能不能給個例子?我檢查了指針和or'd這樣的值,它仍然使用緩存的值:* grfBINDF | = BINDF_GETNEWESTVERSION | BINDF_NOWRITECACHE; – jla 2013-09-10 20:15:23

1

乾淨緩存

// Limpa cache do Internet Explorer 
procedure DeletaIECache; 
var 
    lpEntryInfo: PInternetCacheEntryInfo; 
    hCacheDir: LongWord; 
    dwEntrySize: LongWord; 
begin 
    dwEntrySize := 0; 
    FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize) ; 
    GetMem(lpEntryInfo, dwEntrySize) ; 
    if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize; 
    hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize) ; 
    if hCacheDir <> 0 then 
    begin 
     repeat 
     DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName) ; 
     FreeMem(lpEntryInfo, dwEntrySize) ; 
     dwEntrySize := 0; 
     FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize) ; 
     GetMem(lpEntryInfo, dwEntrySize) ; 
     if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize; 
     until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize) ; 
    end; 
    FreeMem(lpEntryInfo, dwEntrySize) ; 
    FindCloseUrlCache(hCacheDir) ; 
end;