Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi URLDownloadToFile ohne Cache (https://www.delphipraxis.net/16881-urldownloadtofile-ohne-cache.html)

himitsu 24. Feb 2004 23:05


URLDownloadToFile ohne Cache
 
Ich lade einige Dateien mit URLDownloadToFile runter, das geht auch ganz gut.

Danach mach ich 'nen Hash-Vergleich, um die Datei zu prüfen.


Dabei ist mir aber aufgefallen, das vorrangig die Kopie aus dem IE-Cache damit geholt wird, wenn diese vorhanden ist.

Das ist ja auch nicht schlecht - schneller und weniger Traffik.

Aber manchmal kommt es vor, das sich auf dem Server eine neuere Version dieser Datei befindet aber immernoch die "alte" Kopie aus dem IE-Cache verwendet wird.


Ist es also möglich zu verlangen, das nicht die Datei aus dem Cache, sondern die Neue runtergeladen wird?


Ich könnte ja unter cDownloadStatusCallback.OnProgress, ulStatusCode = BINDSTATUS_CACHEFILENAMEAVAILABLE den Namen der Datei im Cache erhalten und diese nach dem Download löschen, so dass bei einem Fehler und im nächsten Durchgang auf jeden Fall die neue runtergeladen würde, also wenn z.B. eine ältere Version geladen wurde.

Aber so ganz sauber finde ich diese Art, mit dem Löschen, nicht.

Luckie 24. Feb 2004 23:44

Re: URLDownloadToFile ohne Cache
 
Gibt es da nicht irgendeinen Flag, der besagt, dass die Datei nicht aus dem Cache geholt werden soll? Ich meine ich hätte da mal was gesehen. :gruebel:

Bit Juggler 25. Feb 2004 00:02

Re: URLDownloadToFile ohne Cache
 
Hi,
laut MSDN
gibt es wohl so ein Flag nicht wie Luckie meint!
Wenn ich mich aber nicht täusche dann ist das Laden von Dateien aus dem Cache eine Generelle abart vom Internet Explorer!
Ich hatte mal einen Download mit 400 kb/s und hab mich gewundert wie das zustande kommen kann! (Hab "nur" DSL)
Im laufe dieser Disskusion schrieb dann halt jemand das die Datein wenn schon vorhanden aus dem Chache geladen werden...

Die Einfachste Lösung um das zu umgehen wäre wohl wenn Du jedes mal vor einem Download erst einmal im Cache nachauen lässt ob die Datei schon vorhanden ist und wenn ja diese vor dem Download löschen lässt!
So ist immer gewährleistet das die Downloads aktuell sind.

Gruß Bit

[Nachtrag:
Auf den Swiss Delphi Seiten gibt es eine Prozedur zum löschen des Gesamtem Caches: Cache löschen
Die kannst Du bestimmt Deinen Wünschen entsprechend anpassen... ]

stoxx 25. Feb 2004 00:19

Re: URLDownloadToFile ohne Cache
 
ich hatte anfangs auch erst URLDownloadToFile verwendet, bin aber dann doch auf INDY umgestiegen.
Da wird der Internet Explorer Cache gar nicht genutzt.
Ausserdem hatte INDY den Vorteil, dass man auch in einen Stream im Speicher laden kann.
Da muss man nich so viel auf der Festplatte rummurksen, wenn man mit den Daten was machen möchte. Das ging per URLDownloadToFile nicht , zumindest hab ich nix gefunden. Da gehts nur direkt auf Festplatte.

Luckie 25. Feb 2004 00:30

Re: URLDownloadToFile ohne Cache
 
Nun ja. Aber wenn man den Overhead der Indy's vermeiden möchte und es nur um das Runterladen geht...

himitsu 25. Feb 2004 00:57

Re: URLDownloadToFile ohne Cache
 
Also den kompletten Cache wollte ich ja nicht unbedingt löschen.

Und 'ne extra Komponente einzubinden wollte ich auch nicht unbedingt.

Und teilweise ist das ja nicht schlecht, das die Version aus'm Cache verwendet wird.



Dann mach ich wohl doch das mit dem Löschen der Cache-Version nach dem Download,

bei 'ner falschen/defekten Dateiversion und 'nem nochmaligen, "richtigen" Download.



PS: Wie kann ich den abfragen, ob eine Datei schon im Cache liegt.

Sonst werden 2 Dateien (vermutlich ~200 KB) doppelt geladen.

himitsu 26. Feb 2004 11:34

Re: URLDownloadToFile ohne Cache
 
http://FNSE.de/15S.gif

Keine(r) 'ne Ahnung, wie ich "einfach" und möglicht nur mit den Standard-Dalphi-Komponenten/Funktionen herausfinden kann, ob eine bestimmte Datei (z.B. www.meineURL.de/dieDatei.endung) bereits im IE-Cache drin ist und unter welchem Namen?


Mein Update (das Download-Proggi) läuft jetzt schon "super".

Nur das Proggi, welches die Uploaddateien zusammenstellt und die hochgeladenen Dateien prüft, braucht recht lange - für ~2000 Dateien / 6,5 MB benötigt es mindestens 20 Minuten. :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz