Как я могу предотвратить получение URLDownloadToFile из кэша? - PullRequest
4 голосов
/ 16 сентября 2008

Я использую URLDownloadToFile для получения файла с веб-сайта. Последующие вызовы возвращают оригинальный файл, а не обновленную версию. Я предполагаю, что это получение кэшированной версии.

Ответы [ 4 ]

8 голосов
/ 16 сентября 2008

Вызовите DeleteUrlCacheEntry с тем же URL-адресом непосредственно перед вызовом URLDownloadToFile. Вам нужно будет связаться с Wininet.lib

5 голосов
/ 03 сентября 2009

Да, по умолчанию он извлекает кэшированную версию файла. Чтобы полностью избежать файла кэша, передайте объект IBindStatusCallback в lpfnCB параметр URLDownloadToFile (). В реализованном вами методе IBindStatusCallback :: GetBindInfo () включите флаг BINDF_GETNEWESTVERSION и, опционально, также флаг BINDF_NOWRITECACHE в значение, возвращаемое с помощью параметра grfBINDF. Если вы хотите, чтобы файл кэша, если он есть, обновлялся вместо пропуска, вместо этого укажите флаг BINDF_RESYNCHRONIZE.

3 голосов
/ 16 сентября 2008

Не могли бы вы добавить безвредный параметр запроса в конец вашего URL?

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

1 голос
/ 20 декабря 2013

чистый кеш

// 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...