Forum: PC-Programmierung C# - webbrowser kein cache


von transistorflüsterer (Gast)


Lesenswert?

Hallo!

Ich programmiere im Visual Studio 2010 in C# und verwende das webbrowser 
control. Damit rufe ich eine dynamische php seite auf und übergebe 
parameter.
zb: www.meinedomain.com/file.php?wert=10

dies geschieht öfters hintereinander (schleife). nun hab ich das 
problem, dass wenn die url seit programmstart schon einmal aufgerufen 
wurde und noch einmal aufgerufen werden sollte (wenn zum beispiel der 
"wert" der gleiche ist, dass dieses blöde control aus dem cache lädt, 
und die seite nicht mehr aus dem netz bezieht. der webserver empfängt 
die daten also nicht.

kann ich den cache umgehen? im netz find ich keine infos dazu.
ein löschen des IE caches (das controll bettet im prinzip ja nur den IE 
ein) oder eine änderung der IE konfiguration kommt nicht in frage, da 
ich die software weitergeben will und die empfänger evtl den IE nutzen 
bzw den cache aus gutem grund aktiviert haben.

wie kann ich das webbrowser control zwingen die seite jedes mal aus dem 
netz zu beziehen?

grüße

von Christian R. (mrrotzi)


Lesenswert?

Wie rufst du's auf? "Navigate"?
Und vor allem, wie sieht der Response Header aus? Der von file.php 
zurück kommt?

von transistorflüsterer (Gast)


Lesenswert?

ja mit navigate.
das ganze system ist noch im aufbau, webserverseitig ist noch nicht viel 
gemacht, deshalb lasse ich mir einfach die aktuelle urzeit zurückgeben, 
dann sehe ich ob die seite neu geladen wurde oder aus dem cache kommt.

von Christian R. (mrrotzi)


Lesenswert?

versuch mal das hier (schön mit header und so...)
und sag deinem Browser, er soll doch bitte nichts cachen


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
  <meta http-equiv="pragma" content="no-cache"/>
  <meta http-equiv="expires" content="0"/>
</head>
<body>
<?php echo $dieUhrzeit; ?>
</body>
</html>

schönen Gruß

von transistorflüsterer (Gast)


Lesenswert?

ok, super, das funktionier mal. danke!

ein großteil ist nun schon mal geschafft. Nun hab ich zusätzlich noch 
eine kommunikation zu einem externen sms gateway, welches ich nicht 
beeinflussen kann. das application interface ist genau gleich wie bei 
meinem webserver, also wird einfach über die adresse übergeben.

von diesem gateway erhalte ich allerdings nur eine zahl ("100") wenn der 
versand klappt. ohne header, ohne body, ohne irgendwelche HTML zeilen. 
nur "100" im klartext. wie gehe ich hier vor?

von transistorflüsterer (Gast)


Lesenswert?

ich denke ich hab es jetzt gelöst, auch wenn das vielleicht nicht die 
schönste variante ist.

ich übergebe eine weitere variable, zb "dummy", welche eine fortlaufende 
zahl darstellt. die URL ist also jedes mal ein wenig anderst, das 
webbrowser controll ist gezwungen die seite aus dem netz zu holen.

trotzdem danke für die hilfe,
grüße

von fz (Gast)


Lesenswert?

Hallo,

hast du es schon mal mit Refresh versucht.

http://msdn.microsoft.com/de-de/library/txewax99(VS.80).aspx

fz

von transistorflüsterer (Gast)


Lesenswert?

refresh kann nur die aktuelle seite neu laden.
aber sagen wir ich rufe die url mit folgenden werten auf:

10
20
30
40
10

dann würde der zweite 10er aus dem cache geladen werden, mit einem 
refresh würde ich allerdings den 40er laden.

von Marcus B. (raketenfred)


Lesenswert?

willst du nur webseiten aufrufen- oder damit wirklich das surfen 
ermöglichen?

Also
soll die webseite im Frontend dargestellt werden oder nur im Backend 
verarbeitet werden?

Wenn nur Backend kann ich dir bei Bedarf ne fertige wget Methode 
zuschicken die einfach nen string der page zurück gibt.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

du kannst auch einfach immer einen zusätzlichen Parameter anhängen z.B.
1
www.meinedomain.com/file.php?wert=10&_time=(current timestamp)
Das Skript stört sich nicht daran und die seite ist jedesmal "neu" für 
den IE.

von Marcus B. (raketenfred)


Lesenswert?

Naja Sinn macht der tolle Cacheehh nur bei Bildern, Webseiten sind 
vergleichweise mickrig ja

von fz (Gast)


Lesenswert?

transistorflüsterer schrieb:
> dann würde der zweite 10er aus dem cache geladen werden, mit einem
> refresh würde ich allerdings den 40er laden.

warum würde er den 40er laden?

Laut msdn müsste er den 10er neu laden:

>Wenn das Steuerelement zu einer Seite navigiert, zeigt es aus Gründen der
>Beschleunigung eine Version aus dem Cache an (sofern verfügbar), anstatt
>die Seite erneut zu downloaden. Die Refresh-Methode zwingt das WebBrowser-
>Steuerelement, die aktuelle Seite durch Downloaden erneut zu laden, sodass
>die neueste Version angezeigt wird.

von Christian R. (mrrotzi)


Lesenswert?

Verwende doch die Klasse WebClient und davon die Methode 
DownloadString(..)

das WebBrowserControl ist doch overkill?!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.