كيف يمكنني منع URLDownloadToFile من استرداد من ذاكرة التخزين المؤقت ؟
سؤال
أنا باستخدام URLDownloadToFile لاسترداد ملف من موقع على شبكة الإنترنت.المكالمات اللاحقة عودة الملف الأصلي بدلا من إصدار محدث.أفترض أنه هو استرجاع النسخة المخبأة.
المحلول
دعوة DeleteUrlCacheEntry مع نفس عنوان URL فقط قبل الدعوة URLDownloadToFile.سوف تحتاج إلى ربط ضد Wininet.ليب
نصائح أخرى
نعم هو سحب النسخة المخبأة من الملف بشكل افتراضي.لتجنب التخزين المؤقت الملف تماما ، واجتياز للدالة ibindstatuscallback الكائن في lpfnCB المعلمة من URLDownloadToFile().في تنفيذ للدالة ibindstatuscallback::GetBindInfo (طريقة) ، وتشمل BINDF_GETNEWESTVERSION العلم اختياريا أيضا BINDF_NOWRITECACHE العلم في قيمة العودة عبر grfBINDF المعلمة.إذا كنت تريد ملف ذاكرة التخزين المؤقت ، إذا كان موجودا ، إلى تحديث بدلا من skippe تحديد BINDF_RESYNCHRONIZE العلم بدلا من ذلك.
يمكنك إضافة غير مؤذية الاستعلام المعلمة إلى نهاية عنوان URL الخاص بك?
تنظيف ذاكرة التخزين المؤقت
// 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;