ID generieren

port29

deus.Server
Hallo Leute,

ich entwickle gerade eine Website mit Hilfe des GWT und stehe gerade vor einem kleinen Problem. Manche Browser cachen den generierten JS Quellcode, sodass dieser nicht zum Servlet kompatibel ist, mit dem dann kommuniziert wird. Meine Idee war deshalb folgende:

Ich habe eine statische Variable in einer Klasse, die sowohl das JS als auch das Servlet benutzt. Und beim ersten Verbindungsaufbau wird dann die ID überprüft. Stimmt die nicht, so wird eine Meldung ausgegeben, die den Nutzer dazu auffordert, den Cache des Browsers zu löschen.

Das ganze funktioniert auch ganz gut, nur ist mir aufgefallen, dass ich in letzter Zeit geschlampt habe. Ich habe ganz einfach die ID vergessen zu erhöhen, bevor ich die Website deployed habe.

Deshalb wollte ich fragen, ob es irgendwie eine Möglichkeit besteht, während des Kompilierens einen String zu definieren, der dann als ID verwendet wird.
 
Wie ist denn dein Buildprozess? Benutzt du ant oder so? Da könnte man das wunderbar integrieren.
 
Leider wird Ant als builder genutzt, sondern ein eigener Compiler. Ich schreibe ja Java Quelltext und dieser wird anschließend in ein JS Quelltext übersetzt und in die erstellte WAR Datei eingefügt. Die WAR Datei werfe ich dann Tomcat zum fraß vor und schon läuft die Seite.
 
Hallo,

bei der richtigen Webserver Konfiguration sollte das kein Problem sein.
Verwendest du Tomcat und einen (per Basic Auth / From Auth / sonstwie) geschützten Bereich?
Sendet dein Webserver im HTTP Antwort Header Pragma no-cache bzw. Cache-Control no-cache für die *.nocache.html Seiten mit?

Schau mal hier:
http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/6c5e842131dbf82d
http://groups.google.com/group/Google-Web-Toolkit-Contributors/browse_thread/thread/4532fa76f9bae6b4

Gruß Tom
 
bei der richtigen Webserver Konfiguration sollte das kein Problem sein.

Hmm... Ich denke, es hat nicht primär etwas mit der Webserver Konfiguration zutun. Wieso das so ist, werde ich am Ende schreiben.

Verwendest du Tomcat und einen (per Basic Auth / From Auth / sonstwie) geschützten Bereich?

Jain, die Seite besteht aus zwei Bereichen. Ein Bereich ist der Public, wo z.B. die Startseite, das Impressum, etc. angezeigt werden. Und dann gibt es einen internen Bereich, bei dem sich die Benutzer mit Benutzernamen + Passwort oder einem Key anmelden können. Jede Anfrage, die an den Server gerichtet wird, hat bei mir ein "Security" Objekt als Parameter, er enthält eben den Key und die "VersionsID".

Sendet dein Webserver im HTTP Antwort Header Pragma no-cache bzw. Cache-Control no-cache für die *.nocache.html Seiten mit?

Der Webserver sendet nach dem Aufrufen der Seite zwei Dateien. Die eine ist eine 7D09697150876A53D2462A485F3490C7.cache.html (600kb) und eine .....nocache.js (6kb)

Jetzt gibt es drei Problemfälle.

a) Es ändert sich etwas an den Servlet Klassen, während ein Benutzer die Website offen im Browser hat. (Die Seite wird ja nur einmal geladen und tut so, als ob es eine "richtige" Anwendung ist)

b) Wird die Seite jedes Mal aus dem Cache geladen, dann kann es für manche Benutzer etwas "teuer" werden. Denn die Zielgruppe hat eher einen langsamen bzw. mobilen Internetanschluss

c) Man kann zwar alles mögliche in den Browserheader reinschreiben, aber ob und wann sich der Browser daran hält, steht leider in den Sternen.

Aus diesem Grund habe ich diese Versionsnummern Geschichte eingeführt. Das Problem ist eben, dass ich ab und zu vergesse diese zu erhöhen. Bei GUI Änderungen ist das ganze kein Problem, aber sobald da RPC Calls geändert wurden, wird es schon etwas kritischer.
 
Zurück