Tomcat cache

Status
Nicht offen für weitere Antworten.
er sollte classen für z.b. eine halbe stunde cachen(das heisst nur noch die resultate z.b. einer datenbankabfrage oder einer schlaufe uber einen query speichern). der sinn ist, dass die website schneller läuft! ich habe auch schon was gefunden: oscache... hat jemand erfahrung damit?
 
Du verwechselst da einiges.

Tomcat ist verantwortlich für JSPs und Servlets, und da wird schon sehr viel gecacht.

DB Abfragen und Ergebnisse cachen ist Aufgabe der Persitenzschicht, und jedes große und weniger große Persistenz Framework bietet dafür Mechanismen.
 
ich spreche ja von tomcat...
die servlets werden jedes mal ausgeführt, wenn ich keinen cache habe. wäre ja auch doof und verwirrend, wenn man es nich will. ich möchte nun aber einen cache, der verhindert, das die servlets nicht jedes mal ausgeführt werden, sondern direkt ihre resultate aus dem cache geladen werden
 
Das kann der Tomcat nicht regeln. Mir jedenfalls wäre unklar, wie der Tomcat wissen soll, daß das Servlet nicht ausgeführt, sondern das zuletzt gelieferte Ergebnis wieder ausgeliefert werden soll.

Du kannst selbst einen Cache dahingehend implementieren, daß z.B. bei gleichen Aufrufparametern die generierte HTML-Seite (vorher bei der ersten Auslieferung im Speicher oder als Datei abgelegt) direkt ausgeliefert wird.

Allerdings mit dem Risiko, daß z.B. konkurrierende Updates, welche nicht durch die gleiche Persitenzschicht laufen, nicht mitzubekommen und damit alte Daten zu liefern.

Caching von Daten ist ein kompliziertes Geschäft!
 
Schmeiss doch die Resultate beim ersten Berechnen in die Session. Du musst im Servlet dann bloß prüfen, ob die Daten schon berechnet wurden. Wenn ja, dann nimmst Du die bestehenden. Zusätzlich könntest Du noch einen Timestamp speichern, um die Daten nach einer bestimmten Zeit (z.B. nach 30 min) neu zu berechnen.
 
danke für die vielen tips, ich habe jetzt genau das, was ich brauche...den oscache:

OSCache unterstützt dynamisches Caching von JSPs, indem nicht ganze Seiten, sondern kleine Teile gecached werden. Ebenso vermag es im zuge von JSPs binärdateien, wie PDFs und ähnliches zu cachen und somit die Leistung der Applikation extrem zu erhöhen, indem Datenbankabfragen zu einem gro&en teil überflüssig werden. Zudem wird dem Anwender eine sehr komfortable und komplette API zur Verwendung von OSCache innerhalb einer beliebigen Applikation angeboten. So können beliebige Java Objekte im Cache abgelegt werden und müssen nicht ein jedes Mal aus der Datenbank abgefragt werden. OSCache bietet dem Benutzer zusätzlich noch die Möglichkeit zu entscheiden, ob Objekte im Arbeitsspeicher oder in einem Dateisystem abgelegt werden. Letzteres hat den Vorteil, dass der Cache auch nach einem allfälligen Neustart der Applikation erhalten bleibt.
 
Es ist aber Vorsicht geboten, denn gerade die im Werbetext viel angepriesenen gesparten Datenbankabfragen können in einem Mehrbenutzersystem zu fehlerhaften Datendarstellungen führen. Du müßtest also die Möglichkeit haben, bei Datenbank-Updates gechachte Objekte zu invalidieren, damit sie auf jeden Fall neu gezogen werden.

Wenn Du kein Multiuser-System hast, dürfte es egal sein.
 
Ich habe ein Multiuser system...aber das ist kein problem, da man für jeden erstellten cache einen key hat. in diesem key gebe ich den benutzer, den seitennamen, die domain und die sprache (alles in id's) an. so klappts. danke für die hilfe!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben