4

URLDownloadToFile を使用して、Web サイトからファイルを取得しています。後続の呼び出しでは、更新されたバージョンではなく元のファイルが返されます。キャッシュされたバージョンを取得していると思います。

4

4 に答える 4

10

URLDownloadToFile を呼び出す直前に、同じ URL で DeleteUrlCacheEntry を呼び出します。Wininet.lib にリンクする必要があります。

于 2008-09-16T18:27:40.203 に答える
5

はい、デフォルトでキャッシュされたバージョンのファイルをプルしています。キャッシュ ファイルを完全に回避するには、URLDownloadToFile() の lpfnCB パラメータで IBindStatusCallback オブジェクトを渡します。実装した IBindStatusCallback::GetBindInfo() メソッドで、BINDF_GETNEWESTVERSION フラグと、オプションで BINDF_NOWRITECACHE フラグを、grfBINDF パラメーターを介して返す値に含めます。キャッシュ ファイル (存在する場合) を skippe の代わりに更新する場合は、代わりに BINDF_RESYNCHRONIZE フラグを指定します。

于 2009-09-03T18:53:30.113 に答える
3

URL の末尾に無害なクエリ パラメータを追加していただけますか?

https://stackoverflow.com/?CacheBuster=1020am

于 2008-09-16T18:35:16.783 に答える
2

クリーンキャッシュ

// 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;
于 2013-12-20T10:39:31.367 に答える