URLDownloadToFileを使用してWebサイトからファイルを取得しています。その後の呼び出しでは、更新されたバージョンではなく元のファイルが返されます。私はそれがキャッシュされたバージョンを取得していると仮定します。URLDownloadToFileがキャッシュから取得できないようにするにはどうすればよいですか?
3
A
答えて
8
URLDownloadToFileを呼び出す直前に同じURLでDeleteUrlCacheEntryを呼び出します。 Wininet.libにリンクする必要があります
3
URLの最後に無害なクエリパラメータを追加できますか?
4
はい、それはデフォルトでは、ファイルのキャッシュされたバージョンを引っ張っています。キャッシュファイルを完全に回避するには、URLDownloadToFile()のlpfnCB パラメータにIBindStatusCallbackオブジェクトを渡します。実装されているIBindStatusCallback :: GetBindInfo()メソッドでは、grfBINDFパラメータを使用して返された値にBINDF_GETNEWESTVERSIONフラグとオプションでBINDF_NOWRITECACHEフラグを含めます。スキップの代わりにキャッシュファイル(存在する場合)を更新したい場合は、代わりにBINDF_RESYNCHRONIZEフラグを指定してください。
1
クリーンキャッシュ
// 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;
関連する問題
- 1. スタックオーバーフローのようなきれいなURLを取得するにはどうすればよいですか?
- 2. ブラウザが履歴のHTMLをキャッシュしないようにするにはどうすればよいですか?
- 3. iframeから親フレームにアクセスできないようにするにはどうすればよいですか?
- 4. og:imageをページから取得するように設定するにはどうすればよいですか?
- 5. 302リダイレクトに従わないようにSystem.Net.Http.HttpClientを取得するにはどうすればよいですか?
- 6. BlackBerryですばらしい透明なPNGを取得するにはどうすればよいですか?
- 7. 未定義ではないフォームからreq.bodyを取得するにはどうすればよいですか?
- 8. WebページがiPhoneからズームされないようにするにはどうすればよいですか?
- 9. スクロールバーがコンテンツに重ならないようにするにはどうすればよいですか?
- 10. Azureウェブサイトがスリープ状態にならないようにするにはどうすればよいですか?
- 11. ObjectIDがプリミティブにならないようにするにはどうすればよいですか?
- 12. ユーザーがphpMyAdminログインページにアクセスできないようにするにはどうすればよいですか?
- 13. ユーザーがVBAにアクセスできないようにするにはどうすればよいですか?
- 14. オーバーフローでスクロールしながら完全なdivを取得するにはどうすればよいですか?
- 15. URLから大きな画像を取得するにはどうすればよいですか?
- 16. 大きなXML文書からストリーミングイテレータ[Node]を取得するにはどうすればよいですか?
- 17. PyQt:ユーザーからファイル名の大きなリストを取得するにはどうすればよいですか?
- 18. Xcodeでボタンの色が変わらないようにするにはどうすればよいですか?
- 19. ブラウザからペーストできるURLを取得するにはどうすればよいですか?
- 20. これらのdivが重複しないようにするにはどうすればよいですか?
- 21. iPhone NSNumberFormatterが丸められないようにするにはどうすればよいですか?
- 22. HTMLページがプログレッシブレンダリングを利用できないようにするにはどうすればよいですか?
- 23. grailsでデータベースインスタンスを取得するにはどうすればよいですか?
- 24. プログラムで_GLOBAL_OFFSET_TABLE_アドレスを取得するにはどうすればよいですか?
- 25. @WindowScopedでオブジェクトを取得するにはどうすればよいですか?
- 26. Clojureでコールスタックを取得するにはどうすればよいですか?
- 27. アプリケーションレベルでネットワークメッセージを取得するにはどうすればよいですか?
- 28. UIPickerViewでテキストを取得するにはどうすればよいですか?
- 29. HttpSessionListenerでHttpServletRequestを取得するにはどうすればよいですか?
- 30. Cでディレクトリリストを取得するにはどうすればよいですか?
あなたは一例を示してもらえますか?私はこのような値でポインタとor'dをチェックし、それでもキャッシュされた値を使用しました:* grfBINDF | = BINDF_GETNEWESTVERSION | BINDF_NOWRITECACHE; – jla
私は提供する例はありません。私が言ったことは、MSDNの文書化された動作です。 '= 'を' = 'に置き換えてみてください。例:' * grfBINDF = BINDF_GETNEWESTVERSION | BINDF_NOWRITECACHE; '既存のビットを保持しているので、変数が呼び出し側のエンドで初期化されていなければ、結果は' BINDF_OFFLINEOPERATION'や 'BINDF_GETFROMCACHE_IF_NET_FAIL'のような無作為なビットで終わる可能性があります。ビットを割り当てる前に出力フラグを常に0にしてください。 –