Appserver soll nicht cachen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Ezechielpitau
User
Beiträge: 7
Registriert: Freitag 25. August 2006, 16:00

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 ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ezechielpitau
User
Beiträge: 7
Registriert: Freitag 25. August 2006, 16:00

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 ;)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten