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. Googleのapiからより大きなfaviconを取得するにはどうすればよいですか?
- 4. iframeから親フレームにアクセスできないようにするにはどうすればよいですか?
- 5. og:imageをページから取得するように設定するにはどうすればよいですか?
- 6. 302リダイレクトに従わないようにSystem.Net.Http.HttpClientを取得するにはどうすればよいですか?
- 7. このようなテキストファイルからデータを取得するにはどうすればいいですか
- 8. 列がグリッドからドラッグされないようにするにはどうすればよいですか?
- 9. WebページがiPhoneからズームされないようにするにはどうすればよいですか?
- 10. 未定義ではないフォームからreq.bodyを取得するにはどうすればよいですか?
- 11. BlackBerryですばらしい透明なPNGを取得するにはどうすればよいですか?
- 12. アクティブな分を取得するにはどうすればよいですか?
- 13. デコレータがTypeScriptでノードモジュールをインポートできないようにするにはどうすればよいですか?
- 14. ユーザーがVBAにアクセスできないようにするにはどうすればよいですか?
- 15. ユーザーがphpMyAdminログインページにアクセスできないようにするにはどうすればよいですか?
- 16. Googleマップアンドロイドにポリラインが重ならないようにするにはどうすればよいですか?
- 17. アクションパラメータが非同期ラムダにならないようにするにはどうすればよいですか?
- 18. 内部リンクが#REFにならないようにするにはどうすればよいですか?
- 19. スクロールバーがコンテンツに重ならないようにするにはどうすればよいですか?
- 20. Azureウェブサイトがスリープ状態にならないようにするにはどうすればよいですか?
- 21. ObjectIDがプリミティブにならないようにするにはどうすればよいですか?
- 22. 大きなXML文書からストリーミングイテレータ[Node]を取得するにはどうすればよいですか?
- 23. URLから大きな画像を取得するにはどうすればよいですか?
- 24. PyQt:ユーザーからファイル名の大きなリストを取得するにはどうすればよいですか?
- 25. オーバーフローでスクロールしながら完全なdivを取得するにはどうすればよいですか?
- 26. Xcodeでボタンの色が変わらないようにするにはどうすればよいですか?
- 27. MacOSでCoreBluetoothキャッシュをクリアするにはどうすればよいですか?
- 28. Chromeでapiキャッシュをリセットするにはどうすればよいですか?
- 29. CocoaでWebViewキャッシュをクリアするにはどうすればよいですか?
- 30. プログラムでキャッシュをクリアするにはどうすればよいですか?
あなたは一例を示してもらえますか?私はこのような値でポインタとor'dをチェックし、それでもキャッシュされた値を使用しました:* grfBINDF | = BINDF_GETNEWESTVERSION | BINDF_NOWRITECACHE; – jla
私は提供する例はありません。私が言ったことは、MSDNの文書化された動作です。 '= 'を' = 'に置き換えてみてください。例:' * grfBINDF = BINDF_GETNEWESTVERSION | BINDF_NOWRITECACHE; '既存のビットを保持しているので、変数が呼び出し側のエンドで初期化されていなければ、結果は' BINDF_OFFLINEOPERATION'や 'BINDF_GETFROMCACHE_IF_NET_FAIL'のような無作為なビットで終わる可能性があります。ビットを割り当てる前に出力フラグを常に0にしてください。 –