URLDownloadToFile を使用して、Web サイトからファイルを取得しています。後続の呼び出しでは、更新されたバージョンではなく元のファイルが返されます。キャッシュされたバージョンを取得していると思います。
AlanKley
質問する
6135 次
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 の末尾に無害なクエリ パラメータを追加していただけますか?
于 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 に答える