Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebbrowser Cache leeren (https://www.delphipraxis.net/147705-twebbrowser-cache-leeren.html)

Phil1977 14. Feb 2010 16:52


TWebbrowser Cache leeren
 
Hi!

Ich rufe eine Webseite mit Webbrowser1.Navigate alle 120 Sekunden auf um den Quelltext auszulesen. Allerdings wird immer die Webseite vom ersten Aufruf in das Webbrowserfenster geladen, vermutlich wird sie aus dem Cache geholt. Kann man bei Webbrowser1.Nagivate angeben, dass die Seite neu geladen werden soll?

mkinzler 14. Feb 2010 16:57

Re: TWebbrowser Cache leeren
 
Eigentlich wird geprüft, ob sich die Seite geändert hat. Wenn ja wird diese neu geladen, sonst die gecachte verwendet.

toms 14. Feb 2010 16:59

Re: TWebbrowser Cache leeren
 
Entweder durch ein Refresh
Delphi-Quellcode:
TWebbrowser.Refresh2(REFRESH_COMPLETELY{=3})
oder wenn du nur den Quelltext ausliest Indy oder Wininet verwenden.

Phil1977 14. Feb 2010 17:02

Re: TWebbrowser Cache leeren
 
Komisch, ich krieg aber immer die gleiche Seite angezeigt, wie beim ersten Mal - es handelt sich eigentlich um ein xml dokument, dass sich jedesmal verändert.
Selbst wenn ich das Programm in Delphi stoppe und dann neue starte bekomm ich immer noch das gleiche Dokument angezeigt, wie beim ersten mal...

Phil1977 14. Feb 2010 17:08

Re: TWebbrowser Cache leeren
 
Also ich lade das xml dokument so:

Delphi-Quellcode:
Form1.WebBrowser1.Navigate('http://sc5.genuinecast.net:8002/admin.cgi?mode=viewxml');
Im Webbrowser1 wird aber immer die gleiche Datei angezeigt, die beim ersten Mal geladen wurde, obwohl sie sich verändert hat :(

toms 14. Feb 2010 17:10

Re: TWebbrowser Cache leeren
 
auch wenn du beim 2. Mal Refresh2(..) aufrufst?

Phil1977 14. Feb 2010 17:15

Re: TWebbrowser Cache leeren
 
Ja, hab ich jetzt auch mal probiert, dann kommt auch die Seite vom ersten mal :(

Phil1977 14. Feb 2010 17:17

Re: TWebbrowser Cache leeren
 
Hab gerade Delphi mal zugemacht, wieder aufgemacht, das Programm neu geladen (Debug-Modus). Selbst da kam die Seite vom ersten Mal (bevor ich Delphi zugemacht habe...)

toms 14. Feb 2010 17:22

Re: TWebbrowser Cache leeren
 
Zitat:

Zitat von Phil1977
Ja, hab ich jetzt auch mal probiert, dann kommt auch die Seite vom ersten mal :(

Geht's so? DownloadURL_NOCache

Phil1977 14. Feb 2010 17:27

Re: TWebbrowser Cache leeren
 
Nee, mir ist erst aufgefallen, dass die Seite sich nicht aktualisiert, nachdem ich schon alles programmiert hatte - das wäre jetzt ziemlich Arbeit das auf eine andere Funktion umzubauen. Vielleicht ist die Datei irgendwie bei Temporary Internet files gespeichert und wird von da immer wieder geholt?

Phil1977 14. Feb 2010 17:30

Re: TWebbrowser Cache leeren
 
Mir fällt gerade auch auf, dass nur folgendes klappt bei mir:

Delphi-Quellcode:
Form1.Webbrowser1.Refresh2;
Wenn ich diesen hier verwende:
Delphi-Quellcode:
Form1.Webbrowser1.Refresh2(REFRESH_COMPLETELY);
...kommt "there is no overload version of refresh2...

thkerkmann 15. Feb 2010 10:56

Re: TWebbrowser Cache leeren
 
Hi

versuch mal an die URL einen weiteren Parameter anzuhängen, den du immer neu ermittelst. z.B:

Delphi-Quellcode:
  Webbrowser1.Navigate(URL + '&timestamp=' + FormatDateTime('yyyymmddhhnnsszzz', Now));
Damit wird der Cache des Internet Explorer ausgetrickst, den Server stört das aber meist nicht.
Wenn deine URL bereits eine Variable enthält (wie bei dir) hängst Du die nächste mit & dran,
wenn nicht, dann ist es die erste und wird mit ? angehängt.

Gruss

fatalerror 15. Feb 2010 14:12

Re: TWebbrowser Cache leeren
 
Vielleicht hilft ja das?
Delphi-Quellcode:
WebBrowser1.Navigate(URL,NavNoReadFromCache);

toms 15. Feb 2010 17:41

Re: TWebbrowser Cache leeren
 
Zitat:

Zitat von fatalerror
Vielleicht hilft ja das?
Delphi-Quellcode:
WebBrowser1.Navigate(URL,NavNoReadFromCache);

Gute Idee. Aber... navNoReadFromCache Not implemented.

toms 15. Feb 2010 17:42

Re: TWebbrowser Cache leeren
 
Zitat:

Zitat von Phil1977
...kommt "there is no overload version of refresh2...

Aktualisiere das Webbrowser Control

paperboy 15. Feb 2010 19:15

Re: TWebbrowser Cache leeren
 
Hallo Phil1977,

hatte vor einer weile das selbe Problem...
hab dann beim suchen rausgefunden das TWebbrowser und und der Internet Explorer den selben Cache benutzen...
Eine weitere Googlesuche später fand ich dann das:

DelphiFAQ

hoffe ich konnte helfen...

beachte die Kommentare weiter unten auf der Seite da der Code auch Cookies löscht was natürlich nicht in allen
Fällen erwünscht sein dürfte... Lösung dazu, wie gesagt, in den Kommentaren...

lg paperboy

toms 15. Feb 2010 20:01

Re: TWebbrowser Cache leeren
 
Cached-URL löschen nach dem Navigieren (etwas "dirty"...)

Delphi-Quellcode:
procedure NavigateNoHistory(WebBrowser: TEmbeddedWB; const URL: string);

  function StrToChr(Str: string; Pos: Integer): Char;
  begin
    Result := Str[Pos];
  end;

var
  Flags: OleVariant;
  HistoryStg: IUrlHistoryStg;
begin
  Flags := navNoHistory;
  WebBrowser.Navigate(WideString(URL), Flags);
  Wait(WebBrowser);
  HistoryStg := CreateComObject(CLSID_CUrlHistory) as IUrlHistoryStg;
  HistoryStg.DeleteUrl(PWideChar(StrToChr(URL, 0)), 0);
end;


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

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