Question

J'utilise URLDownloadToFile pour récupérer un fichier sur un site Web. Les appels suivants renvoient le fichier d'origine plutôt qu'une version mise à jour. Je suppose qu'il est en train de récupérer une version en cache.

Était-ce utile?

La solution

Appelez DeleteUrlCacheEntry avec la même URL juste avant d'appeler URLDownloadToFile. Vous devrez créer un lien contre Wininet.lib

Autres conseils

Oui, il extrait une version mise en cache du fichier par défaut. Pour éviter complètement le fichier de cache, transmettez un objet IBindStatusCallback à la commande lpfnCB. paramètre de URLDownloadToFile (). Dans votre méthode IBindStatusCallback :: GetBindInfo () implémentée, incluez l'indicateur BINDF_GETNEWESTVERSION et éventuellement l'indicateur BINDF_NOWRITECACHE dans la valeur que vous renvoyez via le paramètre grfBINDF. Si vous souhaitez que le fichier cache, s'il est présent, soit mis à jour au lieu d'être skippe, spécifiez l'indicateur BINDF_RESYNCHRONIZE.

Pourriez-vous ajouter un paramètre de requête inoffensif à la fin de votre URL?

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

Nettoyer le cache

// 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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top