Seite 1 von 1

Appserver soll nicht cachen

Verfasst: Mittwoch 30. August 2006, 14:32
von Ezechielpitau
Hi Leute,

bin dabei, ein kleines Programm weiterzuentwickeln, dass ein Vorgänger geschrieben hat. Dabei stehen Python Server Pages im Vordergrund und ich habe ein Servlet auf dem Application Server, der sich bei Anfragen einige Infos von anderen Rechnern im Netzwerk holt und diese zusammengefasst weitergibt.
Mein Problem: Der Application Server cached diese Informationen, wenn ich also als Client auf "Reload" klicke, schickt er mir sofort nochmal die alten Daten zu, statt sie sich neu von den anderen Rechnern zu holen... Wie änder ich das?

PS: bin absoluter Neuling, der das jetzt hier im Praktikum kennenlernen und ein wenig verbessern soll. Also lieber einen Schritt zuviel als einen zu wenig erklären ;)

Verfasst: Mittwoch 30. August 2006, 15:23
von Leonidas
Das ist eher kein Problem des Appservers sondern das deines Browsers: wenn du dort Reload drückst, dann nutzt er noch die alten daten. Versuch es doch mal mit einem sogenannten "Forced Reload" des Browsers, ob es das Problem löst.

Verfasst: Mittwoch 30. August 2006, 15:53
von Ezechielpitau
hmm, ja und nein, ich glaub, ich muss es ein wenig ausführlicher erläutern.
Bisher läuft das folgendermaßen: Bei einer Clientanfrage sammelt der Server die Infos und schickt sie als HTML zurück. Dieses Sammeln dauert zwischen 15 und 30 Sekunden, ist also relativ langsam.
Meine Aufgabe ist nun, etwas zu basteln, was schneller geht. Dies werd ich wohl realisieren, indem ein Skript (Update.py) diese Anfrage regelmäßig zB 1x pro Stunde vornimmt und das Ergebnis als Haupt.html auf dem Server speichert. Kommt nun eine Clientanfrage, kann ihm diese sofort zugeschickt werden, was den Prozess wesentlich beschleunigt.
Im Normalfall reicht so die Aktualität der Seite, trotzdem hätte ich gerne einen Updatebutton beim Client, falls sich was in den letzten Minuten geändert hat.

Soweit so gut, der Client kann dann also auch diese Update.py aufrufen, so dass die HTML-Seite auf dem Server neu geschrieben wird. Und hier ist das Problem. Das wird gecached, so dass ein Klicken auf den Updatebutton oft sozusagen nix bringt.

Der wichtige Teil der Update.py sieht ungefähr so aus:

Haupt = open('C:\...\Haupt.html', 'w')
Haupt.write(download_file(__url))
Haupt.close()

Dieses open müsste jetzt also mit forced reload sein... Wenn ich nur wüsste, wie ;)

Verfasst: Mittwoch 30. August 2006, 15:59
von jens
Wie wäre es, wenn du einfach einen reload-Link in die Seite einbaust?
Also ein Link zu einem Skript welches dann die Aktualisierung vornimmt?

Verfasst: Mittwoch 30. August 2006, 16:10
von gerold
Ezechielpitau hat geschrieben:das Ergebnis als Haupt.html auf dem Server speichert.
Hallo!

Versuche doch mal, diese Zeile in den HTML-Kopf <head>-Bereich deiner "Haupt.html" einzubauen:

Code: Alles auswählen

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
Vielleicht hilft das schon. Zum Testen muss natürlich jeglicher Browser-Cache und Proxy, der dazwischen stehen könnte, geleert bzw. neu gestartet werden. Sonst pfuscht noch die alte Seite rein.

Zusatzhinweis: http://www.htmlgoodies.com/beyond/refer ... hp/3472881

mfg
Gerold
:-)